cocoapods-imy-bin 0.2.8 → 0.3.1.3
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 +4 -4
- data/lib/cocoapods-imy-bin/command/bin.rb +0 -1
- data/lib/cocoapods-imy-bin/command/bin/archive.rb +41 -4
- data/lib/cocoapods-imy-bin/command/bin/auto.rb +22 -15
- data/lib/cocoapods-imy-bin/command/bin/dup.rb +78 -0
- data/lib/cocoapods-imy-bin/config/config.rb +1 -1
- data/lib/cocoapods-imy-bin/config/config_builder.rb +39 -2
- data/lib/cocoapods-imy-bin/gem_version.rb +1 -1
- data/lib/cocoapods-imy-bin/helpers.rb +1 -0
- data/lib/cocoapods-imy-bin/helpers/Info.plist +0 -0
- data/lib/cocoapods-imy-bin/helpers/build_helper.rb +15 -7
- data/lib/cocoapods-imy-bin/helpers/build_utils.rb +63 -0
- data/lib/cocoapods-imy-bin/helpers/framework.rb +25 -2
- data/lib/cocoapods-imy-bin/helpers/framework_builder.rb +153 -56
- data/lib/cocoapods-imy-bin/helpers/sources_helper.rb +5 -2
- data/lib/cocoapods-imy-bin/helpers/spec_source_creator.rb +65 -8
- data/lib/cocoapods-imy-bin/helpers/upload_helper.rb +8 -3
- data/lib/cocoapods-imy-bin/native.rb +4 -0
- data/lib/cocoapods-imy-bin/native/analyzer.rb +2 -0
- data/lib/cocoapods-imy-bin/native/file_accessor.rb +28 -0
- data/lib/cocoapods-imy-bin/native/installer.rb +22 -2
- data/lib/cocoapods-imy-bin/native/pod_target_installer.rb +94 -0
- data/lib/cocoapods-imy-bin/native/podfile_generator.rb +11 -2
- data/lib/cocoapods-imy-bin/native/target_validator.rb +41 -0
- data/lib/cocoapods-imy-bin/native/validator.rb +1 -38
- data/lib/cocoapods-imy-bin/source_provider_hook.rb +35 -23
- metadata +12 -12
- data/lib/cocoapods-imy-bin/command/bin/local.rb +0 -156
- data/lib/cocoapods-imy-bin/helpers/local/loca_llibrary.rb +0 -57
- data/lib/cocoapods-imy-bin/helpers/local/local_build_helper.rb +0 -146
- data/lib/cocoapods-imy-bin/helpers/local/local_framework.rb +0 -65
- data/lib/cocoapods-imy-bin/helpers/local/local_framework_builder.rb +0 -174
- data/lib/cocoapods-imy-bin/helpers/local/local_library_builder.rb +0 -92
@@ -7,6 +7,8 @@ module CBin
|
|
7
7
|
attr_reader :resources_path
|
8
8
|
attr_reader :root_path
|
9
9
|
attr_reader :versions_path
|
10
|
+
attr_reader :swift_module_path
|
11
|
+
attr_reader :fwk_path
|
10
12
|
|
11
13
|
def initialize(name, platform)
|
12
14
|
@name = name
|
@@ -22,8 +24,24 @@ module CBin
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def delete_resources
|
25
|
-
Pathname.new(@resources_path).rmtree
|
26
|
-
(Pathname.new(@fwk_path) + Pathname.new('Resources')).delete
|
27
|
+
Pathname.new(@resources_path).rmtree if File.exist? (@resources_path)
|
28
|
+
(Pathname.new(@fwk_path) + Pathname.new('Resources')).delete if File.exist?(Pathname.new(@fwk_path) + Pathname.new('Resources'))
|
29
|
+
end
|
30
|
+
|
31
|
+
def remove_current_version
|
32
|
+
FileUtils.rm_f(File.join(@fwk_path,@name))
|
33
|
+
FileUtils.rm_f(File.join(@fwk_path,"Headers"))
|
34
|
+
FileUtils.rm_f(File.join(@fwk_path,"Resources"))
|
35
|
+
|
36
|
+
FileUtils.cp_r("#{@versions_path}/.", @fwk_path)
|
37
|
+
# FileUtils.remove_dir(@versions_path)
|
38
|
+
FileUtils.remove_dir("#{@fwk_path}/Versions")
|
39
|
+
|
40
|
+
# current_version_path = @versions_path + Pathname.new('../Current')
|
41
|
+
# `ln -sf A #{current_version_path}`
|
42
|
+
# `ln -sf Versions/Current/Headers #{@fwk_path}/`
|
43
|
+
# `ln -sf Versions/Current/Resources #{@fwk_path}/`
|
44
|
+
# `ln -sf Versions/Current/#{@name} #{@fwk_path}/`
|
27
45
|
end
|
28
46
|
|
29
47
|
private
|
@@ -36,11 +54,16 @@ module CBin
|
|
36
54
|
`ln -sf Versions/Current/#{@name} #{@fwk_path}/`
|
37
55
|
end
|
38
56
|
|
57
|
+
|
58
|
+
|
39
59
|
def make_framework
|
40
60
|
@fwk_path = @root_path + Pathname.new(@name + '.framework')
|
41
61
|
@fwk_path.mkdir unless @fwk_path.exist?
|
42
62
|
|
43
63
|
@module_map_path = @fwk_path + Pathname.new('Modules')
|
64
|
+
@swift_module_path = @module_map_path + Pathname.new(@name + '.swiftmodule')
|
65
|
+
|
66
|
+
|
44
67
|
@versions_path = @fwk_path + Pathname.new('Versions/A')
|
45
68
|
end
|
46
69
|
|
@@ -4,13 +4,14 @@ require 'cocoapods-imy-bin/helpers/framework.rb'
|
|
4
4
|
require 'English'
|
5
5
|
require 'cocoapods-imy-bin/config/config_builder'
|
6
6
|
require 'shellwords'
|
7
|
+
require 'cocoapods-imy-bin/helpers/build_utils'
|
7
8
|
|
8
9
|
module CBin
|
9
10
|
class Framework
|
10
11
|
class Builder
|
11
12
|
include Pod
|
12
13
|
#Debug下还待完成
|
13
|
-
def initialize(spec, file_accessor, platform, source_dir, isRootSpec = true, build_model="
|
14
|
+
def initialize(spec, file_accessor, platform, source_dir, isRootSpec = true, build_model="Debug")
|
14
15
|
@spec = spec
|
15
16
|
@source_dir = source_dir
|
16
17
|
@file_accessor = file_accessor
|
@@ -38,26 +39,54 @@ module CBin
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def lipo_build(defines)
|
41
|
-
UI.section("Building static Library #{@spec}") do
|
42
|
-
# defines = compile
|
43
42
|
|
44
|
-
|
45
|
-
|
43
|
+
if CBin::Build::Utils.is_swift_module(@spec) || !CBin::Build::Utils.uses_frameworks?
|
44
|
+
UI.section("Building static Library #{@spec}") do
|
45
|
+
# defines = compile
|
46
46
|
|
47
|
-
|
47
|
+
# build_sim_libraries(defines)
|
48
|
+
output = framework.versions_path + Pathname.new(@spec.name)
|
48
49
|
|
49
|
-
|
50
|
-
copy_license
|
51
|
-
copy_resources
|
50
|
+
build_static_library_for_ios(output)
|
52
51
|
|
53
|
-
|
52
|
+
copy_headers
|
53
|
+
copy_license
|
54
|
+
copy_resources
|
55
|
+
|
56
|
+
cp_to_source_dir
|
57
|
+
end
|
58
|
+
else
|
59
|
+
# begin
|
60
|
+
UI.section("Building framework #{@spec}") do
|
61
|
+
# defines = compile
|
62
|
+
|
63
|
+
# build_sim_libraries(defines)
|
64
|
+
output = framework.fwk_path + Pathname.new(@spec.name)
|
65
|
+
|
66
|
+
copy_static_framework_dir_for_ios
|
67
|
+
|
68
|
+
build_static_framework_machO_for_ios(output)
|
69
|
+
|
70
|
+
# copy_license
|
71
|
+
copy_framework_resources
|
72
|
+
|
73
|
+
#cp_to_source_dir#
|
74
|
+
|
75
|
+
# rescue Object => exception
|
76
|
+
# UI.puts exception
|
77
|
+
# end
|
78
|
+
end
|
54
79
|
end
|
80
|
+
|
55
81
|
framework
|
56
82
|
end
|
57
83
|
|
58
84
|
private
|
59
85
|
|
60
86
|
def cp_to_source_dir
|
87
|
+
# 删除Versions 软链接
|
88
|
+
framework.remove_current_version if CBin::Build::Utils.is_swift_module(@spec)
|
89
|
+
|
61
90
|
framework_name = "#{@spec.name}.framework"
|
62
91
|
target_dir = File.join(CBin::Config::Builder.instance.zip_dir,framework_name)
|
63
92
|
FileUtils.rm_rf(target_dir) if File.exist?(target_dir)
|
@@ -72,14 +101,10 @@ module CBin
|
|
72
101
|
def build_sim_libraries(defines)
|
73
102
|
UI.message 'Building simulator libraries'
|
74
103
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
xcodebuild(defines, "-sdk iphonesimulator ARCHS=\'#{arch}\' ", "build-#{arch}","Debug")
|
80
|
-
end
|
81
|
-
else
|
82
|
-
xcodebuild(defines, "-sdk iphonesimulator ", 'build-simulator', "Release")
|
104
|
+
# archs = %w[i386 x86_64]
|
105
|
+
archs = ios_architectures_sim
|
106
|
+
archs.map do |arch|
|
107
|
+
xcodebuild(defines, "-sdk iphonesimulator ARCHS=\'#{arch}\' ", "build-#{arch}",@build_model)
|
83
108
|
end
|
84
109
|
|
85
110
|
end
|
@@ -96,32 +121,20 @@ module CBin
|
|
96
121
|
def build_static_library_for_ios(output)
|
97
122
|
UI.message "Building ios libraries with archs #{ios_architectures}"
|
98
123
|
static_libs = static_libs_in_sandbox('build') + static_libs_in_sandbox('build-simulator') + @vendored_libraries
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
124
|
+
|
125
|
+
ios_architectures.map do |arch|
|
126
|
+
static_libs += static_libs_in_sandbox("build-#{arch}") + @vendored_libraries
|
127
|
+
end
|
128
|
+
ios_architectures_sim do |arch|
|
129
|
+
static_libs += static_libs_in_sandbox("build-#{arch}") + @vendored_libraries
|
106
130
|
end
|
107
131
|
|
108
132
|
build_path = Pathname("build")
|
109
133
|
build_path.mkpath unless build_path.exist?
|
110
134
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
library
|
115
|
-
end
|
116
|
-
else
|
117
|
-
libs = ios_architectures.map do |arch|
|
118
|
-
library = "build/package-#{@spec.name}-#{arch}.a"
|
119
|
-
# libtool -arch_only arm64 -static -o build/package-armv64.a build/libIMYFoundation.a build-simulator/libIMYFoundation.a
|
120
|
-
# 从liBFoundation.a 文件中,提取出 arm64 架构的文件,命名为build/package-armv64.a
|
121
|
-
UI.message "libtool -arch_only #{arch} -static -o #{library} #{static_libs.join(' ')}"
|
122
|
-
`libtool -arch_only #{arch} -static -o #{library} #{static_libs.join(' ')}`
|
123
|
-
library
|
124
|
-
end
|
135
|
+
libs = (ios_architectures + ios_architectures_sim) .map do |arch|
|
136
|
+
library = "build-#{arch}/lib#{@spec.name}.a"
|
137
|
+
library
|
125
138
|
end
|
126
139
|
|
127
140
|
UI.message "lipo -create -output #{output} #{libs.join(' ')}"
|
@@ -166,15 +179,15 @@ module CBin
|
|
166
179
|
defines += @spec.consumer(@platform).compiler_flags.join(' ')
|
167
180
|
|
168
181
|
options = ios_build_options
|
169
|
-
if is_debug_model
|
182
|
+
# if is_debug_model
|
170
183
|
archs = ios_architectures
|
171
184
|
# archs = %w[arm64 armv7 armv7s]
|
172
185
|
archs.map do |arch|
|
173
186
|
xcodebuild(defines, "ARCHS=\'#{arch}\' OTHER_CFLAGS=\'-fembed-bitcode -Qunused-arguments\'","build-#{arch}",@build_model)
|
174
187
|
end
|
175
|
-
else
|
176
|
-
xcodebuild(defines,options)
|
177
|
-
end
|
188
|
+
# else
|
189
|
+
# xcodebuild(defines,options)
|
190
|
+
# end
|
178
191
|
|
179
192
|
defines
|
180
193
|
end
|
@@ -186,14 +199,14 @@ module CBin
|
|
186
199
|
def target_name
|
187
200
|
#区分多平台,如配置了多平台,会带上平台的名字
|
188
201
|
# 如libwebp-iOS
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
202
|
+
if @spec.available_platforms.count > 1
|
203
|
+
"#{@spec.name}-#{Platform.string_name(@spec.consumer(@platform).platform_name)}"
|
204
|
+
else
|
205
|
+
@spec.name
|
206
|
+
end
|
194
207
|
end
|
195
208
|
|
196
|
-
def xcodebuild(defines = '', args = '', build_dir = 'build',build_model = 'Debug')
|
209
|
+
def xcodebuild(defines = '', args = '', build_dir = 'build', build_model = 'Debug')
|
197
210
|
|
198
211
|
unless File.exist?("Pods.xcodeproj") #cocoapods-generate v2.0.0
|
199
212
|
command = "xcodebuild #{defines} #{args} CONFIGURATION_BUILD_DIR=#{File.join(File.expand_path("..", build_dir), File.basename(build_dir))} clean build -configuration #{build_model} -target #{target_name} -project ./Pods/Pods.xcodeproj 2>&1"
|
@@ -248,10 +261,10 @@ module CBin
|
|
248
261
|
if Pathname(module_map_file).exist?
|
249
262
|
module_map = File.read(module_map_file)
|
250
263
|
end
|
251
|
-
elsif public_headers.map(&:basename).map(&:to_s).include?("#{@spec.name}.h")
|
264
|
+
elsif public_headers.map(&:basename).map(&:to_s).include?("#{@spec.name}-umbrella.h")
|
252
265
|
module_map = <<-MAP
|
253
266
|
framework module #{@spec.name} {
|
254
|
-
umbrella header "#{@spec.name}.h"
|
267
|
+
umbrella header "#{@spec.name}-umbrella.h"
|
255
268
|
|
256
269
|
export *
|
257
270
|
module * { export * }
|
@@ -265,9 +278,29 @@ module CBin
|
|
265
278
|
framework.module_map_path.mkpath
|
266
279
|
end
|
267
280
|
File.write("#{framework.module_map_path}/module.modulemap", module_map)
|
281
|
+
|
282
|
+
# unless framework.swift_module_path.exist?
|
283
|
+
# framework.swift_module_path.mkpath
|
284
|
+
# end
|
285
|
+
# todo 所有架构的swiftModule拷贝到 framework.swift_module_path
|
286
|
+
archs = ios_architectures + ios_architectures_sim
|
287
|
+
archs.map do |arch|
|
288
|
+
swift_module = "build-#{arch}/#{@spec.name}.swiftmodule"
|
289
|
+
if File.directory?(swift_module)
|
290
|
+
FileUtils.cp_r("#{swift_module}/.", framework.swift_module_path)
|
291
|
+
end
|
292
|
+
end
|
293
|
+
swift_Compatibility_Header = "build-#{archs.first}/Swift\ Compatibility\ Header/#{@spec.name}-Swift.h"
|
294
|
+
FileUtils.cp(swift_Compatibility_Header,framework.headers_path) if File.exist?(swift_Compatibility_Header)
|
295
|
+
info_plist_file = File.join(File.dirname(__FILE__),"info.plist")
|
296
|
+
FileUtils.cp(info_plist_file,framework.fwk_path)
|
268
297
|
end
|
269
298
|
end
|
270
299
|
|
300
|
+
def copy_swift_header
|
301
|
+
|
302
|
+
end
|
303
|
+
|
271
304
|
def copy_license
|
272
305
|
UI.message 'Copying license'
|
273
306
|
license_file = @spec.license[:file] || 'LICENSE'
|
@@ -300,13 +333,18 @@ module CBin
|
|
300
333
|
`cp -rp #{bundle_files} #{framework.resources_path} 2>&1`
|
301
334
|
end
|
302
335
|
|
303
|
-
|
304
|
-
unless
|
305
|
-
spec_source_dir = File.join(Dir.pwd,"
|
336
|
+
real_source_dir = @source_dir
|
337
|
+
unless @isRootSpec
|
338
|
+
spec_source_dir = File.join(Dir.pwd,"#{@spec.name}")
|
339
|
+
unless File.exist?(spec_source_dir)
|
340
|
+
spec_source_dir = File.join(Dir.pwd,"Pods/#{@spec.name}")
|
341
|
+
end
|
342
|
+
raise "copy_resources #{spec_source_dir} no exist " unless File.exist?(spec_source_dir)
|
343
|
+
|
344
|
+
spec_source_dir = File.join(Dir.pwd,"#{@spec.name}")
|
345
|
+
real_source_dir = spec_source_dir
|
306
346
|
end
|
307
|
-
raise "copy_resources #{spec_source_dir} no exist " unless File.exist?(spec_source_dir)
|
308
347
|
|
309
|
-
real_source_dir = @isRootSpec ? @source_dir : spec_source_dir
|
310
348
|
resources = [@spec, *@spec.recursive_subspecs].flat_map do |spec|
|
311
349
|
expand_paths(real_source_dir, spec.consumer(@platform).resources)
|
312
350
|
end.compact.uniq
|
@@ -333,6 +371,65 @@ module CBin
|
|
333
371
|
end
|
334
372
|
end
|
335
373
|
|
374
|
+
#---------------------------------swift--------------------------------------#
|
375
|
+
# lipo -create .a
|
376
|
+
def build_static_framework_machO_for_ios(output)
|
377
|
+
UI.message "Building ios framework with archs #{ios_architectures}"
|
378
|
+
|
379
|
+
static_libs = static_libs_in_sandbox('build') + @vendored_libraries
|
380
|
+
ios_architectures.map do |arch|
|
381
|
+
static_libs += static_libs_in_sandbox("build-#{arch}") + @vendored_libraries
|
382
|
+
end
|
383
|
+
|
384
|
+
ios_architectures_sim do |arch|
|
385
|
+
static_libs += static_libs_in_sandbox("build-#{arch}") + @vendored_libraries
|
386
|
+
end
|
387
|
+
|
388
|
+
build_path = Pathname("build")
|
389
|
+
build_path.mkpath unless build_path.exist?
|
390
|
+
|
391
|
+
libs = (ios_architectures + ios_architectures_sim) .map do |arch|
|
392
|
+
library = "build-#{arch}/#{@spec.name}.framework/#{@spec.name}"
|
393
|
+
library
|
394
|
+
end
|
395
|
+
|
396
|
+
UI.message "lipo -create -output #{output} #{libs.join(' ')}"
|
397
|
+
`lipo -create -output #{output} #{libs.join(' ')}`
|
398
|
+
end
|
399
|
+
|
400
|
+
def copy_static_framework_dir_for_ios
|
401
|
+
|
402
|
+
archs = ios_architectures + ios_architectures_sim
|
403
|
+
framework_dir = "build-#{ios_architectures_sim.first}/#{@spec.name}.framework"
|
404
|
+
framework_dir = "build-#{ios_architectures.first}/#{@spec.name}.framework" unless File.exist?(framework_dir)
|
405
|
+
unless File.exist?(framework_dir)
|
406
|
+
raise "#{framework_dir} path no exist"
|
407
|
+
end
|
408
|
+
File.join(Dir.pwd, "build-#{ios_architectures_sim.first}/#{@spec.name}.framework")
|
409
|
+
FileUtils.cp_r(framework_dir, framework.root_path)
|
410
|
+
|
411
|
+
# todo 所有架构的swiftModule拷贝到 framework.swift_module_path
|
412
|
+
archs.map do |arch|
|
413
|
+
swift_module = "build-#{arch}/#{@spec.name}.framework/Modules/#{@spec.name}.swiftmodule"
|
414
|
+
if File.directory?(swift_module)
|
415
|
+
FileUtils.cp_r("#{swift_module}/.", framework.swift_module_path)
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
# 删除Versions 软链接
|
420
|
+
framework.remove_current_version
|
421
|
+
end
|
422
|
+
|
423
|
+
def copy_framework_resources
|
424
|
+
resources = Dir.glob("#{framework.fwk_path + Pathname.new('Resources')}/*")
|
425
|
+
if resources.count == 0
|
426
|
+
framework.delete_resources
|
427
|
+
end
|
428
|
+
end
|
429
|
+
|
430
|
+
|
431
|
+
#---------------------------------getter and setter--------------------------------------#
|
432
|
+
|
336
433
|
def framework
|
337
434
|
@framework ||= begin
|
338
435
|
framework = Framework.new(@spec.name, @platform.name.to_s)
|
@@ -21,8 +21,11 @@ module CBin
|
|
21
21
|
# 只允许二进制的 specification subspec 比源码的 specification subspec 多
|
22
22
|
#
|
23
23
|
def valid_sources(code_dependencies = false)
|
24
|
-
sources = [
|
25
|
-
|
24
|
+
sources = [code_source]
|
25
|
+
unless code_dependencies
|
26
|
+
sources << binary_source
|
27
|
+
sources.reverse!
|
28
|
+
end
|
26
29
|
sources
|
27
30
|
end
|
28
31
|
|
@@ -20,12 +20,12 @@ module CBin
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def create
|
23
|
-
spec =
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
# spec = nil
|
24
|
+
if CBin::Build::Utils.is_framework(@code_spec)
|
25
|
+
spec = create_framework_from_code_spec
|
26
|
+
else
|
27
|
+
spec = create_from_code_spec
|
28
|
+
end
|
29
29
|
|
30
30
|
spec
|
31
31
|
end
|
@@ -121,12 +121,69 @@ module CBin
|
|
121
121
|
@spec.vendored_libraries = binary_vendored_libraries
|
122
122
|
@spec.resources = binary_resources if @spec.attributes_hash.keys.include?("resources")
|
123
123
|
@spec.description = <<-EOF
|
124
|
-
「 converted automatically by plugin cocoapods-imy-bin
|
124
|
+
「 converted automatically by plugin cocoapods-imy-bin @厦门美柚 - slj 」
|
125
|
+
#{@spec.description}
|
126
|
+
EOF
|
127
|
+
@spec
|
128
|
+
end
|
129
|
+
|
130
|
+
def create_framework_from_code_spec
|
131
|
+
@spec = code_spec.dup
|
132
|
+
# vendored_frameworks | resources | source | source_files | public_header_files
|
133
|
+
# license | resource_bundles | vendored_libraries
|
134
|
+
|
135
|
+
# Project Linkin
|
136
|
+
@spec.vendored_frameworks = "#{code_spec.root.name}.framework"
|
137
|
+
|
138
|
+
# Resources
|
139
|
+
extnames = []
|
140
|
+
extnames << '*.bundle' if code_spec_consumer.resource_bundles.any?
|
141
|
+
if code_spec_consumer.resources.any?
|
142
|
+
extnames += code_spec_consumer.resources.map { |r| File.basename(r) }
|
143
|
+
end
|
144
|
+
if extnames.any?
|
145
|
+
@spec.resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
|
146
|
+
end
|
147
|
+
|
148
|
+
# Source Location
|
149
|
+
@spec.source = binary_source
|
150
|
+
|
151
|
+
# Source Code
|
152
|
+
# @spec.source_files = framework_contents('Headers/*')
|
153
|
+
# @spec.public_header_files = framework_contents('Headers/*')
|
154
|
+
|
155
|
+
# Unused for binary
|
156
|
+
spec_hash = @spec.to_hash
|
157
|
+
# spec_hash.delete('license')
|
158
|
+
spec_hash.delete('resource_bundles')
|
159
|
+
spec_hash.delete('exclude_files')
|
160
|
+
spec_hash.delete('preserve_paths')
|
161
|
+
# 这里不确定 vendored_libraries 指定的时动态/静态库
|
162
|
+
# 如果是静态库的话,需要移除,否则就不移除
|
163
|
+
# 最好是静态库都独立成 Pod ,cocoapods-package 打静态库去 collect 目标文件时好做过滤
|
164
|
+
# 这里统一只对命名后缀 .a 文件做处理
|
165
|
+
# spec_hash.delete('vendored_libraries')
|
166
|
+
# libraries 只能假设为动态库不做处理了,如果有例外,需要开发者自行处理
|
167
|
+
vendored_libraries = spec_hash.delete('vendored_libraries')
|
168
|
+
vendored_libraries = Array(vendored_libraries).reject { |l| l.end_with?('.a') }
|
169
|
+
if vendored_libraries.any?
|
170
|
+
spec_hash['vendored_libraries'] = vendored_libraries
|
171
|
+
end
|
172
|
+
|
173
|
+
# Filter platforms
|
174
|
+
platforms = spec_hash['platforms']
|
175
|
+
selected_platforms = platforms.select { |k, _v| @platforms.include?(k) }
|
176
|
+
spec_hash['platforms'] = selected_platforms.empty? ? platforms : selected_platforms
|
177
|
+
|
178
|
+
@spec = Pod::Specification.from_hash(spec_hash)
|
179
|
+
@spec.description = <<-EOF
|
180
|
+
「 converted automatically by plugin cocoapods-imy-bin @厦门美柚 - slj 」
|
125
181
|
#{@spec.description}
|
126
|
-
EOF
|
182
|
+
EOF
|
127
183
|
@spec
|
128
184
|
end
|
129
185
|
|
186
|
+
|
130
187
|
def binary_source
|
131
188
|
{ http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
|
132
189
|
end
|