cocoapods-flutter-dt 0.2.6 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4f441456f0ceed7cd009d900e7632d4fb7ab1e00ab96f332889f4b892f34643
4
- data.tar.gz: e4110bb5ed9e4b86c00619409624d5eb1af1107517576a1c6bf93cd3e1a21183
3
+ metadata.gz: 70acc69141278cc52466ce8627ea2ed9647d456f62e31660cc8ce133eadf8480
4
+ data.tar.gz: 77c5a34281bd9ec62c1ac0a5393df90f6d264619358e7ec6157500135a5b232d
5
5
  SHA512:
6
- metadata.gz: 911ec5af72653faa562f8da3e84fe425dc93fb0c3e3f9ebca7ff66ede5dd386f20e1a65372425db3363cc342b1e8073651b17338aad4635a32e28c89f559663d
7
- data.tar.gz: 66194aac9fb054042c13037aca0450bf903fc4e3b92486f2853d91b4f825f2719d7bbe2436dc50469234b5df83ded1594b7e0ba38fe5d3e91dd430236216d153
6
+ metadata.gz: '07395563b55e1ed0d9a630764257dcd72676a67bb6260ee7365eb20d3f3358ca294d2b7218a0725f5eb0fdb2802b91eb3d994e51d75818799292613f94d3452e'
7
+ data.tar.gz: c25ec94332249ac292e20f122fc0210faae4cfce96661e9b1b0f9e9f37eedbf94875c8e4827fcdfadb39d795c65fa64a340f936cc820ff4c3aceee67770bf4ec
data/README.md CHANGED
@@ -35,13 +35,13 @@ Here is simple [binary server](https://github.com/NicolasKim/binary_server.git)
35
35
 
36
36
  ```shell script
37
37
  $ cd flutter project
38
- $ pod flutter archive package_name 0.0.1 --repo=cocoapods --wrapper=flutterw --sources=https://github.com/private_spec_repo.git,https://github.com/Cocoapods/Specs.git
38
+ $ pod flutter foryou package_name 0.0.1 --repo=cocoapods --wrapper=flutterw --sources=https://github.com/private_spec_repo.git,https://github.com/Cocoapods/Specs.git
39
39
  ```
40
40
 
41
41
 
42
42
  There is more options
43
43
  ```shell script
44
- $ pod flutter archive --help
44
+ $ pod flutter foryou --help
45
45
  --repo podspec repo
46
46
  --sources podspec sources
47
47
  --upgrade pub upgrade
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = CocoapodsFlutter::VERSION
9
9
  spec.authors = ['Dreamtracer']
10
10
  spec.email = ['jinqiucheng1006@live.cn']
11
- spec.description = %q{Flutter archive tool}
12
- spec.summary = %q{Simple way to archive and use}
11
+ spec.description = %q{Flutter foryou tool}
12
+ spec.summary = %q{Simple way to foryou and use}
13
13
  spec.homepage = 'https://github.com/NicolasKim/cocoapods-flutter-dt.git'
14
14
  spec.license = 'MIT'
15
15
 
@@ -19,10 +19,12 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'parallel'
22
- spec.add_dependency 'cocoapods', '~> 1.11.2'
22
+ spec.add_dependency 'plist'
23
+ spec.add_dependency 'cocoapods', '~> 1.13.0'
23
24
  spec.add_dependency 'rubyzip', '>= 1.0.0'
24
25
  spec.add_dependency 'rest-client'
25
26
  spec.add_dependency 'molinillo'
27
+ spec.add_dependency 'yaml'
26
28
  spec.add_development_dependency 'bundler', '~> 1.3'
27
29
  spec.add_development_dependency 'rake'
28
30
  end
@@ -4,7 +4,7 @@ module Pod
4
4
  class Command
5
5
  class Flutter < Command
6
6
  class Archive < Flutter
7
- self.summary = 'archive flutter'
7
+ self.summary = 'foryou flutter'
8
8
  self.description = <<-DESC
9
9
  发布二进制组件 / 源码组件
10
10
  DESC
@@ -23,36 +23,40 @@ module Pod
23
23
  ['--buildrun', 'run build-runner'],
24
24
  ['--debug', 'debug mode'],
25
25
  ['--release', 'release mode'],
26
+ ['--major', 'major version'],
27
+ ['--minor', 'minor version'],
28
+ ['--patch', 'patch version'],
26
29
  ].concat(Pod::Command::Repo::Push.options).concat(super).uniq
27
30
  end
28
31
 
29
32
  def initialize(argv)
30
33
  @module_name = argv.shift_argument
31
- tmp_version = argv.shift_argument
32
- #如果满足
33
- if tmp_version =~ /([0-9]+\.)+[0-9]+/
34
- @version = tmp_version
35
- else
36
- tmp_str = tmp_version.dup
37
- last_v = "0"
38
- mid_v = "0"
39
- main_v = "0"
40
- unless tmp_str.empty?
41
- last_v = tmp_str.slice!(tmp_str.length - 1, 1)
42
- end
43
- unless tmp_str.empty?
44
- mid_v = tmp_str.slice!(tmp_str.length - 1, 1)
45
- end
46
- unless tmp_str.empty?
47
- main_v = tmp_str
48
- end
49
-
50
- versions = Array.new
51
- versions << main_v
52
- versions << mid_v
53
- versions << last_v
54
- @version = versions.join "."
55
- end
34
+ @version = [argv.option('major'), argv.option('minor'), argv.option('patch')].join "."
35
+ # tmp_version = argv.shift_argument
36
+ # #如果满足
37
+ # if tmp_version =~ /([0-9]+\.)+[0-9]+/
38
+ # @version = tmp_version
39
+ # else
40
+ # tmp_str = tmp_version.dup
41
+ # last_v = "0"
42
+ # mid_v = "0"
43
+ # main_v = "0"
44
+ # unless tmp_str.empty?
45
+ # last_v = tmp_str.slice!(tmp_str.length - 1, 1)
46
+ # end
47
+ # unless tmp_str.empty?
48
+ # mid_v = tmp_str.slice!(tmp_str.length - 1, 1)
49
+ # end
50
+ # unless tmp_str.empty?
51
+ # main_v = tmp_str
52
+ # end
53
+ #
54
+ # versions = Array.new
55
+ # versions << main_v
56
+ # versions << mid_v
57
+ # versions << last_v
58
+ # @version = versions.join "."
59
+ # end
56
60
 
57
61
 
58
62
  @build_modes = []
@@ -60,7 +64,7 @@ module Pod
60
64
  @sources = argv.option('sources', 'https://github.com/CocoaPods/Specs.git').split(',')
61
65
  @flutter_wrapper = argv.option('wrapper', 'flutter')
62
66
  @pub_upgrade = argv.flag?('upgrade', true)
63
- @flutter_version = argv.option('flutterversion', default_fluttter_version)
67
+ @flutter_version = argv.option('flutterversion')
64
68
  @build_run = argv.flag?('buildrun', true)
65
69
  @working_dir = Dir.pwd
66
70
 
@@ -81,7 +85,7 @@ module Pod
81
85
 
82
86
  def default_fluttter_version
83
87
  flutter_version = ''
84
- stdin, stdout_stderr, wait_thr = Open3.popen2e(@flutter_wrapper, '--version');
88
+ stdin, stdout_stderr, wait_thr = Open3.popen2e('fvm', @flutter_wrapper, '--version');
85
89
  stdout_stderr.each_line do |line|
86
90
  if line.start_with?('Flutter ')
87
91
  flutter_version = line.split(' • ').first.split(' ').last
@@ -0,0 +1,43 @@
1
+ require 'cocoapods-flutter/native/archive/archive'
2
+
3
+ module Pod
4
+ class Command
5
+ class Flutter < Command
6
+ class DSYM < Flutter
7
+ self.summary = 'foryou flutter'
8
+ self.description = <<-DESC
9
+ Upload dSYM file to server
10
+ DESC
11
+
12
+ self.arguments = [
13
+ # CLAide::Argument.new([''], false)
14
+ ]
15
+
16
+ def self.options
17
+ [
18
+ ['--version', 'FlutterSDK version'],
19
+ ['--hash', 'FlutterEngine hash see Flutter.frameworks info.plist FlutterEngine value'],
20
+ ['--dsym', 'zip file path, you should download dSYM manually from "https://storage.cloud.google.com/flutter_infra_release/flutter/{engine hash}/ios-release/Flutter.dSYM.zip"']
21
+ ]#.concat(Pod::Command::Repo::Push.options).concat(super).uniq
22
+ end
23
+
24
+ def initialize(argv)
25
+
26
+ @flutter_version = argv.option('version', '1.22.6')
27
+ @hash = argv.option('hash')
28
+ @dsym = argv.option('dsym')
29
+ @working_dir = Dir.pwd
30
+
31
+ super
32
+ end
33
+
34
+ def run
35
+ remote = Remote.new()
36
+ remote.upload_flutter_sdk_dsym @flutter_version, @hash, @dsym
37
+ Pod::UserInterface.info "Upload success"
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,4 +1,5 @@
1
1
  require 'cocoapods-flutter/command/flutter/archive'
2
+ require 'cocoapods-flutter/command/flutter/dsym'
2
3
 
3
4
  module Pod
4
5
  class Command
@@ -1,3 +1,3 @@
1
1
  module CocoapodsFlutter
2
- VERSION = "0.2.6"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -4,6 +4,8 @@ require 'zip'
4
4
  require 'cocoapods-flutter/native/archive/zip_tool'
5
5
  require 'cocoapods-flutter/native/archive/remote'
6
6
  require 'molinillo'
7
+ require 'plist'
8
+ require 'yaml'
7
9
 
8
10
  class Archiver
9
11
 
@@ -47,6 +49,14 @@ class Archiver
47
49
  end
48
50
 
49
51
  def archive
52
+ # open('http://127.0.0.1:8080/frameworks/download/Flutter/1.22.6/release/file.zip') do |u|
53
+ # File.open('/Users/dreamtracer/Desktop/flutter.zip', "w+") do |file|
54
+ # file.write u.read.force_encoding("UTF-8")
55
+ # end
56
+ # end
57
+
58
+ #使用fvm切换flutter 版本
59
+ flutter_sdk_version_switch @flutter_version
50
60
 
51
61
  @pub_upgrade ? pub_upgrade : pub_get
52
62
  if local_podfile_exists?
@@ -58,12 +68,13 @@ class Archiver
58
68
  if @build_run
59
69
  excute_build_run
60
70
  end
71
+
61
72
  build_framework
62
73
  @plugins = fetch_plugins
63
74
 
64
75
  if @build_modes.include?('debug')
65
76
  # Debug瘦身
66
- thin_arm64 "#{@product_dir}Debug/App.framework/App"
77
+ #thin_arm64 "#{@product_dir}Debug/App.framework/App"
67
78
  debug
68
79
  end
69
80
 
@@ -74,41 +85,21 @@ class Archiver
74
85
  Pod::UserInterface.message "All is ready to use!, now you can use 'flutter_pod '#{@module_name}', '#{@version}', :mode=>'debug/release' to use the pod"
75
86
  end
76
87
 
77
- def make_flutter_pods(mode)
78
- @pub_upgrade ? pub_upgrade : pub_get
79
- setup_pod_sources
80
- if @build_run
81
- excute_build_run
82
- end
83
-
84
- build_app mode
88
+ private
85
89
 
86
- flutter_spec_dir = @product_dir + 'Flutter'
87
- flutter_spec_file = flutter_spec_dir + '/Flutter.podspec.json'
88
- flutter_spec = Pod::Spec.from_file @working_dir + '/.ios/Flutter/engine/Flutter.podspec'
89
- flutter_spec.vendored_frameworks = ['Flutter.framework', 'App.framework']
90
- plugin_registrant_spec_file = @working_dir + '/.ios/Flutter/FlutterPluginRegistrant/FlutterPluginRegistrant.podspec'
90
+ def flutter_sdk_version_switch(version)
91
91
 
92
- unless Dir.exist? flutter_spec_dir
93
- FileUtils.mkdir_p flutter_spec_dir
94
- end
92
+ commands = [
93
+ 'fvm',
94
+ 'use',
95
+ version
96
+ ]
95
97
 
96
- File.open flutter_spec_file, "w+" do |file|
97
- file.write flutter_spec.to_pretty_json
98
+ if CommandRunner.run(*commands) == false
99
+ # raise "Error running #{commands.join ' '} "
98
100
  end
99
-
100
- FileUtils.cp_r @working_dir + '/.ios/Flutter/engine/Flutter.framework', flutter_spec_dir
101
- FileUtils.cp_r @working_dir + '/.ios/Flutter/App.framework', flutter_spec_dir
102
-
103
- plugins = fetch_plugins
104
- plugins.append Plugins.new('Flutter',flutter_spec_file,flutter_spec)
105
- plugins.append Plugins.new('FlutterPluginRegistrant',plugin_registrant_spec_file, Pod::Spec.from_file(plugin_registrant_spec_file))
106
-
107
- plugins
108
101
  end
109
102
 
110
- private
111
-
112
103
  def thin_arm64(path)
113
104
  # thin arm64
114
105
  thin_commands = [
@@ -138,13 +129,13 @@ class Archiver
138
129
  end
139
130
 
140
131
  def pub_upgrade
141
- if CommandRunner.run(@flutter_wrapper, 'pub', 'upgrade') == false
132
+ if CommandRunner.run('fvm', @flutter_wrapper, 'pub', 'upgrade') == false
142
133
  raise "Pub upgrade fail"
143
134
  end
144
135
  end
145
136
 
146
137
  def pub_get
147
- if CommandRunner.run(@flutter_wrapper, 'pub', 'get') == false
138
+ if CommandRunner.run('fvm', @flutter_wrapper, 'pub', 'get') == false
148
139
  raise "Pub get fail"
149
140
  end
150
141
  end
@@ -213,7 +204,7 @@ class Archiver
213
204
  end
214
205
 
215
206
  def excute_build_run
216
- if CommandRunner.run(@flutter_wrapper, 'packages','pub','run','build_runner','build','--delete-conflicting-outputs') == false
207
+ if CommandRunner.run('fvm', @flutter_wrapper, 'packages','pub','run','build_runner','build','--delete-conflicting-outputs') == false
217
208
  raise "Error running #{@flutter_wrapper} packages pub run build_runner build --delete-conflicting-outputs"
218
209
  end
219
210
  end
@@ -221,6 +212,7 @@ class Archiver
221
212
  def build_framework
222
213
 
223
214
  commands = [
215
+ 'fvm',
224
216
  @flutter_wrapper,
225
217
  'build',
226
218
  'ios-framework',
@@ -243,16 +235,17 @@ class Archiver
243
235
 
244
236
  end
245
237
 
246
- def build_app(mode)
247
- if CommandRunner.run(@flutter_wrapper, 'build','ios',"--#{mode}" ,"--no-codesign") == false
248
- # FileUtils.remove_dir product_dir, true
249
- raise "Error running #{@flutter_wrapper} build ios --#{mode} --no-codesign"
250
- end
251
- end
238
+ # def build_app(mode)
239
+ # if CommandRunner.run('fvm', @flutter_wrapper, 'build','ios',"--#{mode}" ,"--no-codesign") == false
240
+ # # FileUtils.remove_dir product_dir, true
241
+ # raise "Error running #{@flutter_wrapper} build ios --#{mode} --no-codesign"
242
+ # end
243
+ # end
252
244
 
253
245
  def fetch_plugins
254
246
  results = []
255
247
  flutter_plugins_list = @working_dir + '/.flutter-plugins'
248
+
256
249
  lines = IO.readlines(flutter_plugins_list)
257
250
  lines.each do |line|
258
251
  unless line =~ /^#/
@@ -260,8 +253,38 @@ class Archiver
260
253
  key = key_val[0]
261
254
  value = key_val[1]
262
255
  value = value.gsub /\n/, ''
263
- path = "#{value}ios/#{key}.podspec"
264
- results.append Plugins.new(key, path, Pod::Specification.from_file(path))
256
+ yaml_content = YAML.load_file value + 'pubspec.yaml'
257
+ f_h = yaml_content['flutter']
258
+ if f_h != nil then
259
+ p_h = f_h['plugin']
260
+ if p_h != nil then
261
+ pl_h = p_h['platforms']
262
+ if pl_h != nil then
263
+ if pl_h['ios'] != nil
264
+ path = "#{value}ios/#{key}.podspec"
265
+ if File.exist? path
266
+ results.append Plugins.new(key, path, Pod::Specification.from_file(path))
267
+ end
268
+ end
269
+ else
270
+ path = "#{value}ios/#{key}.podspec"
271
+ if File.exist? path
272
+ results.append Plugins.new(key, path, Pod::Specification.from_file(path))
273
+ end
274
+ end
275
+ else
276
+ path = "#{value}ios/#{key}.podspec"
277
+ if File.exist? path
278
+ results.append Plugins.new(key, path, Pod::Specification.from_file(path))
279
+ end
280
+ end
281
+ else
282
+ path = "#{value}ios/#{key}.podspec"
283
+ if File.exist? path
284
+ results.append Plugins.new(key, path, Pod::Specification.from_file(path))
285
+ end
286
+ end
287
+
265
288
  end
266
289
  end
267
290
  results
@@ -288,24 +311,87 @@ class Archiver
288
311
  zipfile.get_output_stream("info.json") { |f| f.write json }
289
312
  zipfile.add 'pubspec.lock', "#{@working_dir}/pubspec.lock"
290
313
  zipfile.get_output_stream("download_sdk.rb") { |f| f.write sdk_download }
291
- zipfile.add_dir "App.framework", "#{product_dir}/App.framework"
292
- zipfile.add_dir "FlutterPluginRegistrant.framework","#{product_dir}/FlutterPluginRegistrant.framework"
314
+ zipfile.add_dir "App.xcframework", "#{product_dir}/App.xcframework"
315
+ zipfile.add_dir "FlutterPluginRegistrant.xcframework","#{product_dir}/FlutterPluginRegistrant.xcframework"
293
316
  plugins.each do |plugin|
294
- file = File.join(product_dir, "#{plugin.spec.name}.framework")
317
+ file = File.join(product_dir, "#{plugin.spec.name}.xcframework")
295
318
  if Dir.exist? file
296
- zipfile.add_dir("#{plugin.spec.name}.framework", file)
319
+ zipfile.add_dir("#{plugin.spec.name}.xcframework", file)
297
320
  end
298
321
  end
299
322
  end
300
323
 
301
324
  sdk_file = zip_file_dir + "/Flutter.zip"
325
+ home_dir = Dir.home
326
+ cache_dir = home_dir + "/.cocoapods/.cache"
327
+ flutter_sdk_dsym_dir = cache_dir + "/flutter_sdk_dsym"
328
+ #创建dsym缓存文件
329
+ if Dir.exist?(flutter_sdk_dsym_dir) == false
330
+ Dir.mkdir flutter_sdk_dsym_dir
331
+ end
332
+
302
333
  Zip::File.open sdk_file, Zip::File::CREATE do |zipfile|
303
- file = File.join(product_dir, "Flutter.framework")
304
- zipfile.add_dir "Flutter.framework", file
334
+ file = File.join(product_dir, "Flutter.xcframework")
335
+ zipfile.add_dir "Flutter/Flutter.xcframework", file
336
+ #读取Flutter.framework中的info.plist文件中的FlutterEngine的值
337
+ info_plist_path = info_plist_from_xcframework file, 1
338
+ # info_plist_path = File.join(file, "Info.plist")
339
+ info_plist = Plist.parse_xml(info_plist_path)
340
+ engine_hash = info_plist["FlutterEngine"]
341
+ dsym_dir = File.join(flutter_sdk_dsym_dir, engine_hash)
342
+ dsym_zip_file_path = File.join(dsym_dir, 'Flutter.framework.dSYM.zip')
343
+ dsym_file_path = File.join(dsym_dir, 'Flutter.framework.dSYM')
344
+ #检查dsym文件缓存
345
+ Pod::UserInterface.info "Checking Flutter.framework.dSYM at #{dsym_dir}"
346
+ if Dir.exist?(dsym_dir) == false
347
+ Pod::UserInterface.info "Flutter.framework.dSYM not found at #{dsym_dir}"
348
+ Dir.mkdir(dsym_dir) unless Dir.exist?(dsym_dir)
349
+ #下载dsym
350
+ remote = Remote.new()
351
+ remote.download_flutter_sdk_dsym @flutter_version, engine_hash, dsym_zip_file_path
352
+ Pod::UserInterface.info "Flutter.framework.dSYM download success"
353
+ Dir.mkdir(dsym_file_path) unless File.exist?(dsym_file_path)
354
+
355
+ Pod::UserInterface.info "Start unzip #{dsym_zip_file_path}"
356
+ Zip::File.open(dsym_zip_file_path) do |zif_file|
357
+ zif_file.each do |entry|
358
+ # 通过下句打印可知,entyr是Zip::ZipEntry的对象
359
+ # puts entry.class
360
+ # 利用File.join构建文件存放的路径,路径为存放目录加上压缩文件的相对路径
361
+ entry.extract(File.join(dsym_dir, entry::name))
362
+ end
363
+ end
364
+ #重命名:如果文件名为Flutter.dSYM,则将Flutter.dSYM重命名为Flutter.framework.dSYM,因为cocoapods只识别Flutter.framework.dSYM
365
+ File.rename( File.join( dsym_dir, 'Flutter.dSYM'), dsym_file_path ) if File.exist? File.join( dsym_dir, 'Flutter.dSYM')
366
+
367
+ Pod::UserInterface.info "Unzip #{dsym_zip_file_path} success"
368
+
369
+ end
370
+
371
+ #向zip中添加dsym文件
372
+ Pod::UserInterface.info "Add Flutter.framework.dSYM to #{sdk_file}"
373
+ zipfile.add_dir "Flutter/Flutter.framework.dSYM", dsym_file_path
305
374
  end
306
375
  [zip_file, sdk_file]
307
376
  end
308
377
 
378
+ #depth 1为第一层
379
+ def info_plist_from_xcframework(path, depth)
380
+ children = Dir.children path
381
+ for child in children
382
+ child_path = File.join path, child
383
+ if File.directory? child_path then
384
+ r = info_plist_from_xcframework child_path, depth + 1
385
+ if r != nil
386
+ return r
387
+ end
388
+ elsif depth > 1 && child == 'Info.plist' then
389
+ return child_path
390
+ end
391
+ end
392
+ return nil
393
+ end
394
+
309
395
  def sdk_download
310
396
 
311
397
  ruby_code = <<-CODE
@@ -338,8 +424,8 @@ if Dir.exist?(sdk_dir) == false
338
424
  Dir.mkdir sdk_dir
339
425
  download sdk_url, sdk_file
340
426
  end
341
- if File.exist? "Flutter.framework"
342
- `rm -rf Flutter.framework`
427
+ if Dir.exist? "Flutter"
428
+ `rm -rf Flutter`
343
429
  end
344
430
  `unzip \#{sdk_file} -d \#{Dir.pwd}`
345
431
  CODE
@@ -349,6 +435,7 @@ end
349
435
  end
350
436
 
351
437
  def upload_files(app_file, flutter_sdk, mode)
438
+
352
439
  Pod::UserInterface.info 'Start upload resources'
353
440
  remote = Remote.new()
354
441
  Pod::UserInterface.info "Checking #{@module_name}_#{@version}_#{mode.downcase}..."
@@ -370,7 +457,6 @@ end
370
457
  if result
371
458
  Pod::UserInterface.info "Flutter_#{@flutter_version}_#{mode.downcase} was found, skip upload"
372
459
  end
373
-
374
460
  end
375
461
 
376
462
  def ignore_dependency?(name)
@@ -390,7 +476,7 @@ end
390
476
 
391
477
  dependency_graph = Molinillo::DependencyGraph.new
392
478
  @plugins.each do |plugin|
393
- plugin.spec.all_dependencies.each do |dep|
479
+ plugin.spec.all_dependencies('ios').each do |dep|
394
480
  unless ignore_dependency? dep.name
395
481
  dependency_graph.add_vertex(dep.name, dep, true)
396
482
  end
@@ -414,9 +500,9 @@ end
414
500
  s.prepare_command = "ruby download_sdk.rb #{sdk_download_url}"
415
501
  s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64 x86_64' }
416
502
  s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64 x86_64' }
417
- vendored_frameworks = ["App.framework", "Flutter.framework", "FlutterPluginRegistrant.framework"]
503
+ vendored_frameworks = ["App.xcframework", "Flutter/Flutter.xcframework", "FlutterPluginRegistrant.xcframework"]
418
504
  @plugins.each do |plugin|
419
- vendored_frameworks.append "#{plugin.name}.framework"
505
+ vendored_frameworks.append "#{plugin.name}.xcframework"
420
506
  end
421
507
  s.vendored_frameworks = vendored_frameworks
422
508
 
@@ -430,7 +516,7 @@ end
430
516
  File.open spec_file, "w+" do |file|
431
517
  file.write spec.to_pretty_json
432
518
  end
433
-
519
+ Pod::UserInterface.info "podspec file path #{spec_file}"
434
520
  Dir.chdir temp_dir do |dir|
435
521
  Pod::Command::Repo::Push.run([@pod_repo, '--skip-import-validation', '--verbose', '--allow-warnings', "--sources=#{@sources.join(',')}"])
436
522
  File.delete spec_file
@@ -1,4 +1,5 @@
1
1
  require 'rest-client'
2
+ require 'open-uri'
2
3
 
3
4
  class Remote
4
5
 
@@ -7,6 +8,7 @@ class Remote
7
8
  raise StandardError, "Need 'FLUTTER_BINARY_SERVER_BASEURL' in env"
8
9
  end
9
10
  @base_url = ENV['FLUTTER_BINARY_SERVER_BASEURL']
11
+ @coverage_base_url = ENV['COVERAGE_SERVER_BASEURL']
10
12
  end
11
13
 
12
14
  def exist?(name, version, tag)
@@ -42,4 +44,44 @@ class Remote
42
44
  @base_url + json["data"]['download_url']
43
45
  end
44
46
 
47
+ def download_flutter_sdk_dsym(version, hash, des_path)
48
+ uri = URI.join @base_url, "/dsyms/download/flutter/#{version}/#{hash}/file.zip"
49
+ Pod::UserInterface.info "Start download Flutter.framework.dSYM from #{uri.to_s}"
50
+ data = RestClient::Request.execute(:method => :get, :url => uri.to_s, :timeout => 3600, :raw_response => true)
51
+ file = File.new(des_path, 'w+')
52
+ file.write data
53
+ file.close
54
+ end
55
+
56
+ def upload_flutter_sdk_dsym(version, hash, file_path)
57
+ uri = URI.join @base_url, "/dsyms"
58
+ Pod::UserInterface.info "Start upload '#{file_path}' to #{uri.to_s}"
59
+ req = RestClient::Request.new(
60
+ :method => :post,
61
+ :url => uri.to_s,
62
+ :timeout => 3600,
63
+ :payload => {
64
+ :multipart => true,
65
+ :file => File.new(file_path, 'rb'),
66
+ :name => 'flutter',
67
+ :version => version,
68
+ :tag => hash
69
+ }
70
+ )
71
+ req.execute
72
+ end
73
+
74
+ def config_coverage(bundle_id, version, git_commit_hash, index_db_path, git_repo, build_base_dir)
75
+ uri = URI.join @coverage_base_url, "/coverage/flutter/report/config"
76
+ Pod::UserInterface.info "Uploading coverage config info to #{uri.to_s}"
77
+ resp = RestClient.post(uri.to_s, {
78
+ index_db: File.new(index_db_path, 'rb'),
79
+ git_commit_hash: git_commit_hash,
80
+ git_repo: git_repo,
81
+ build_base_dir: build_base_dir,
82
+ bundle_id: bundle_id,
83
+ version: version
84
+ })
85
+ end
86
+
45
87
  end
@@ -67,6 +67,7 @@ module Pod
67
67
  end
68
68
  return
69
69
  end
70
+
70
71
  pod "#{flutter_project_name}_#{flutter_project_mode}", flutter_project_version
71
72
 
72
73
  end
@@ -5,4 +5,5 @@ require 'cocoapods-flutter/native/specification/consumer'
5
5
  require 'cocoapods-flutter/native/podfile'
6
6
  require 'cocoapods-flutter/native/pod_source_preparer'
7
7
  require 'cocoapods-flutter/native/archive/archive'
8
+ require 'cocoapods-flutter/native/archive/remote'
8
9
  require 'cocoapods-flutter/native/archive/command_runner'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-flutter-dt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "\bDreamtracer"
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-18 00:00:00.000000000 Z
11
+ date: 2023-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -24,20 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: plist
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: cocoapods
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 1.11.2
47
+ version: 1.13.0
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 1.11.2
54
+ version: 1.13.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rubyzip
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yaml
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: bundler
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +136,7 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
- description: Flutter archive tool
139
+ description: Flutter foryou tool
112
140
  email:
113
141
  - jinqiucheng1006@live.cn
114
142
  executables: []
@@ -125,6 +153,7 @@ files:
125
153
  - lib/cocoapods-flutter/command.rb
126
154
  - lib/cocoapods-flutter/command/flutter.rb
127
155
  - lib/cocoapods-flutter/command/flutter/archive.rb
156
+ - lib/cocoapods-flutter/command/flutter/dsym.rb
128
157
  - lib/cocoapods-flutter/gem_version.rb
129
158
  - lib/cocoapods-flutter/native.rb
130
159
  - lib/cocoapods-flutter/native/archive/archive.rb
@@ -146,7 +175,7 @@ homepage: https://github.com/NicolasKim/cocoapods-flutter-dt.git
146
175
  licenses:
147
176
  - MIT
148
177
  metadata: {}
149
- post_install_message:
178
+ post_install_message:
150
179
  rdoc_options: []
151
180
  require_paths:
152
181
  - lib
@@ -161,10 +190,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
190
  - !ruby/object:Gem::Version
162
191
  version: '0'
163
192
  requirements: []
164
- rubygems_version: 3.0.6
165
- signing_key:
193
+ rubygems_version: 3.0.3.1
194
+ signing_key:
166
195
  specification_version: 4
167
- summary: Simple way to archive and use
196
+ summary: Simple way to foryou and use
168
197
  test_files:
169
198
  - spec/command/flutter_spec.rb
170
199
  - spec/spec_helper.rb