cocoapods-flutter-dt 0.2.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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