cocoapods-bb-bin 0.2.4 → 0.2.6
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/README.md +3 -1
- data/lib/cocoapods-bb-bin/command/bin/archive.rb +10 -2
- data/lib/cocoapods-bb-bin/command/bin/auto.rb +22 -2
- data/lib/cocoapods-bb-bin/command/bin/repo/push.rb +3 -1
- data/lib/cocoapods-bb-bin/command/bin/tag.rb +2 -0
- data/lib/cocoapods-bb-bin/config/config.rb +2 -1
- data/lib/cocoapods-bb-bin/gem_version.rb +1 -1
- data/lib/cocoapods-bb-bin/helpers/build_helper.rb +7 -2
- data/lib/cocoapods-bb-bin/helpers/push_spec_helper.rb +4 -1
- data/lib/cocoapods-bb-bin/helpers/upload_helper.rb +3 -3
- data/lib/cocoapods-bb-bin/helpers/xcframework_builder.rb +6 -5
- data/lib/cocoapods-bb-bin/native/sources_manager.rb +11 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76f2ce8fcc1062dc2abe81a8284f8eedce188b1aa9e0bf2990d9b7d8a76fc0dc
|
4
|
+
data.tar.gz: 36824c60a9c04f42d860cd4207f0f05edc8a226971dab512fa4a476721db0468
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e57f12db8d797fa85238c9b3b4671a75d4d627e4bdb851d709f7fae67458ccbd757c06f2fd7cbbaee64d0041f80eb915644da0b16b2621b6a950fb513de136c
|
7
|
+
data.tar.gz: 0d744031084e801efe7c4c2f5d252abf35504ab36e065543223f350b51b4b3eadc7946f28d8afebe7e2400c8c3d72ee6fbcb36280ecfd1f0176bb8a219637a69
|
data/README.md
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
6. **支持 使用与不使用 use_frameworks!**
|
20
20
|
7. **少数支持swift项目二进制化编译的开源项目之一**
|
21
21
|
8. 静态库支持.a、.framework、.xcframework
|
22
|
+
9. 动态库支持.xcframework
|
22
23
|
|
23
24
|
|
24
25
|
关于 插件具体的架构部署实践和更详细的资源,可以参考
|
@@ -47,7 +48,8 @@
|
|
47
48
|
## Usage
|
48
49
|
$ pod bin auto [NAME.podspec] # 根据use_frameworks判断生成.a还是.framework
|
49
50
|
$ pod bin auto [NAME.podspec] --framework-output # 生成framework文件
|
50
|
-
$ pod bin auto [NAME.podspec] --xcframework-output #
|
51
|
+
$ pod bin auto [NAME.podspec] --xcframework-output # 生成静态xcframework文件
|
52
|
+
$ pod bin auto [NAME.podspec] --xcframework-dylib-output # 生成动态xcframework文件
|
51
53
|
更多请看
|
52
54
|
$pod bin auto --help
|
53
55
|
|
@@ -29,7 +29,9 @@ module Pod
|
|
29
29
|
['--no-clean', '保留构建中间产物'],
|
30
30
|
['--sources', '私有源地址,多个用分号区分'],
|
31
31
|
['--framework-output', '输出framework文件'],
|
32
|
-
['--xcframework-output', '
|
32
|
+
['--xcframework-output', '输出静态xcframework文件'],
|
33
|
+
['--xcframework-dylib-output', '输出动态xcframework文件'],
|
34
|
+
['--support_maccatalyst', '输出xcframework文件是否支持Mac Catalyst'],
|
33
35
|
['--no-zip', '不压缩静态库 为 zip'],
|
34
36
|
['--configuration', 'Build the specified configuration (e.g. Debug). Defaults to Release'],
|
35
37
|
['--env', "该组件上传的环境 %w[dev debug_iphoneos release_iphoneos]"]
|
@@ -48,6 +50,8 @@ module Pod
|
|
48
50
|
@code_dependencies = argv.flag?('code-dependencies')
|
49
51
|
@framework_output = argv.flag?('framework-output', false )
|
50
52
|
@xcframework_output = argv.flag?('xcframework-output', false )
|
53
|
+
@xcframework_dylib_output = argv.flag?('xcframework-dylib-output', false )
|
54
|
+
@support_maccatalyst = argv.flag?('support_maccatalyst', false )
|
51
55
|
@clean = argv.flag?('no-clean', false)
|
52
56
|
@zip = argv.flag?('zip', true)
|
53
57
|
@all_make = argv.flag?('all-make', false )
|
@@ -62,7 +66,7 @@ module Pod
|
|
62
66
|
@additional_args = argv.remainder!
|
63
67
|
@build_finshed = false
|
64
68
|
@spec_sources = @sources
|
65
|
-
if @xcframework_output
|
69
|
+
if @xcframework_output || @xcframework_dylib_output
|
66
70
|
# 生存xcframework优先使用源码仓库\二进制仓库
|
67
71
|
@spec_sources = "#{sources_optionV2(@code_dependencies, nil)},https:\/\/cdn.cocoapods.org"
|
68
72
|
end
|
@@ -91,6 +95,8 @@ module Pod
|
|
91
95
|
@platform,
|
92
96
|
@framework_output,
|
93
97
|
@xcframework_output,
|
98
|
+
@xcframework_dylib_output,
|
99
|
+
@support_maccatalyst,
|
94
100
|
@spec_sources,
|
95
101
|
@zip,
|
96
102
|
@spec,
|
@@ -133,6 +139,8 @@ module Pod
|
|
133
139
|
@platform,
|
134
140
|
@framework_output,
|
135
141
|
@xcframework_output,
|
142
|
+
@xcframework_dylib_output,
|
143
|
+
@support_maccatalyst,
|
136
144
|
@sources,
|
137
145
|
@zip,
|
138
146
|
@spec,
|
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'cocoapods-bb-bin/command/bin/auto'
|
3
3
|
require 'cocoapods-bb-bin/helpers/upload_helper'
|
4
|
+
require 'cocoapods-bb-bin/native/sources_manager'
|
4
5
|
|
5
6
|
module Pod
|
6
7
|
class Command
|
@@ -17,7 +18,9 @@ module Pod
|
|
17
18
|
['--allow-prerelease', '允许使用 prerelease 的版本'],
|
18
19
|
['--no-clean', '保留构建中间产物'],
|
19
20
|
['--framework-output', '输出framework文件'],
|
20
|
-
['--xcframework-output', '
|
21
|
+
['--xcframework-output', '输出静态xcframework文件'],
|
22
|
+
['--xcframework-dylib-output', '输出动态xcframework文件'],
|
23
|
+
['--support_maccatalyst', '输出xcframework文件是否支持Mac Catalyst'],
|
21
24
|
['--no-zip', '不压缩静态 framework 为 zip'],
|
22
25
|
['--all-make', '对该组件的依赖库,全部制作为二进制组件'],
|
23
26
|
['--configuration', 'Build the specified configuration (e.g. Release ). Defaults to Debug'],
|
@@ -41,6 +44,8 @@ module Pod
|
|
41
44
|
@allow_prerelease = argv.flag?('allow-prerelease')
|
42
45
|
@framework_output = argv.flag?('framework-output', false )
|
43
46
|
@xcframework_output = argv.flag?('xcframework-output', false )
|
47
|
+
@xcframework_dylib_output = argv.flag?('xcframework-dylib-output', false )
|
48
|
+
@support_maccatalyst = argv.flag?('support_maccatalyst', true )
|
44
49
|
@pushsourcespec = argv.flag?('all-push', false )
|
45
50
|
@clean = argv.flag?('clean', true)
|
46
51
|
@zip = argv.flag?('zip', true)
|
@@ -59,6 +64,15 @@ module Pod
|
|
59
64
|
end
|
60
65
|
|
61
66
|
def run
|
67
|
+
# 配置二进制库环境,需要区分静态库还是动态库
|
68
|
+
if @xcframework_output || @xcframework_dylib_output
|
69
|
+
isGenDylib = @xcframework_dylib_output
|
70
|
+
sources_manager = Pod::Config.instance.sources_manager
|
71
|
+
sources_manager.initLibEnv(isGenDylib)
|
72
|
+
source = sources_manager.binary_source
|
73
|
+
UI.puts "push run source:#{source}"
|
74
|
+
end
|
75
|
+
|
62
76
|
@specification = Specification.from_file(@podspec)
|
63
77
|
|
64
78
|
sources_sepc = run_archive
|
@@ -66,7 +80,7 @@ module Pod
|
|
66
80
|
fail_push_specs = []
|
67
81
|
sources_sepc.uniq.each do |spec|
|
68
82
|
begin
|
69
|
-
fail_push_specs << spec unless CBin::Upload::Helper.new(spec,@code_dependencies,@sources,@pushsourcespec).upload
|
83
|
+
fail_push_specs << spec unless CBin::Upload::Helper.new(spec,@code_dependencies,@sources,@pushsourcespec).upload(@xcframework_dylib_output)
|
70
84
|
rescue Object => exception
|
71
85
|
UI.puts exception
|
72
86
|
fail_push_specs << spec
|
@@ -125,6 +139,12 @@ module Pod
|
|
125
139
|
if @xcframework_output
|
126
140
|
argvs += ['--xcframework-output']
|
127
141
|
end
|
142
|
+
if @xcframework_dylib_output
|
143
|
+
argvs += ['--xcframework-dylib-output']
|
144
|
+
end
|
145
|
+
if @support_maccatalyst
|
146
|
+
argvs += ['--support_maccatalyst']
|
147
|
+
end
|
128
148
|
if @all_make
|
129
149
|
argvs += ['--all-make']
|
130
150
|
end
|
@@ -19,7 +19,8 @@ module Pod
|
|
19
19
|
|
20
20
|
def self.options
|
21
21
|
[
|
22
|
-
['--binary', '
|
22
|
+
['--binary', '发布组件的二进制库版本'],
|
23
|
+
['--dylib', '是否生成动态库,默认生成静态库'],
|
23
24
|
['--template-podspec=A.binary-template.podspec', '生成拥有 subspec 的二进制 spec 需要的模版 podspec, 插件会更改 version 和 source'],
|
24
25
|
['--reserve-created-spec', '保留生成的二进制 spec 文件'],
|
25
26
|
['--code-dependencies', '使用源码依赖进行 lint'],
|
@@ -34,6 +35,7 @@ module Pod
|
|
34
35
|
@repo = argv.shift_argument
|
35
36
|
@podspec = argv.shift_argument
|
36
37
|
@binary = argv.flag?('binary')
|
38
|
+
@dylib = argv.flag?('dylib', false)
|
37
39
|
@loose_options = argv.flag?('loose-options')
|
38
40
|
@code_dependencies = argv.flag?('code-dependencies', true)
|
39
41
|
@sources = argv.option('sources') || []
|
@@ -13,7 +13,8 @@ module CBin
|
|
13
13
|
{
|
14
14
|
'configuration_env' => { description: '编译环境', default: 'dev', selection: %w[dev debug_iphoneos release_iphoneos] },
|
15
15
|
'code_repo_url' => { description: '源码私有源 Git 地址', default: 'https://github.com/CocoaPods/Specs.git' },
|
16
|
-
'binary_repo_url' => { description: '
|
16
|
+
'binary_repo_url' => { description: '二进制静态库私有源 Git 地址', default: 'https://github.com/CocoaPods/Specs.git' },
|
17
|
+
'dylib_repo_url' => { description: '动态链接库私有源 Git 地址', default: 'https://github.com/CocoaPods/Specs.git' },
|
17
18
|
'binary_download_url' => { description: '二进制下载地址,内部会依次传入组件名称与版本,替换字符串中的 %s ', default: 'http://localhost:8080/frameworks/%s/%s/zip' },
|
18
19
|
# 'binary_type' => { description: '二进制打包类型', default: 'framework', selection: %w[framework library] },
|
19
20
|
'download_file_type' => { description: '下载二进制文件类型', default: 'zip', selection: %w[zip tgz tar tbz txz dmg] }
|
@@ -19,6 +19,8 @@ module CBin
|
|
19
19
|
platform,
|
20
20
|
framework_output,
|
21
21
|
xcframework_output,
|
22
|
+
xcframework_dylib_output,
|
23
|
+
support_maccatalyst,
|
22
24
|
spec_sources,
|
23
25
|
zip,
|
24
26
|
rootSpec,
|
@@ -32,6 +34,8 @@ module CBin
|
|
32
34
|
@skip_archive = skip_archive
|
33
35
|
@framework_output = framework_output
|
34
36
|
@xcframework_output = xcframework_output
|
37
|
+
@xcframework_dylib_output = xcframework_dylib_output
|
38
|
+
@support_maccatalyst = support_maccatalyst
|
35
39
|
@spec_sources = spec_sources
|
36
40
|
@zip = zip
|
37
41
|
|
@@ -85,7 +89,7 @@ module CBin
|
|
85
89
|
|
86
90
|
# 是否编译xcframework库
|
87
91
|
def is_build_xcframework
|
88
|
-
if @xcframework_output
|
92
|
+
if @xcframework_output || @xcframework_dylib_output
|
89
93
|
return true
|
90
94
|
end
|
91
95
|
return false
|
@@ -94,7 +98,8 @@ module CBin
|
|
94
98
|
def build_static_xcframework
|
95
99
|
source_dir = Dir.pwd
|
96
100
|
UI.puts "xcframework source_dir=#{source_dir}"
|
97
|
-
|
101
|
+
isGenDylib = @xcframework_dylib_output
|
102
|
+
builder = CBin::XCFramework::XCBuilder.new(@spec, @spec_sources, @support_maccatalyst, isGenDylib)
|
98
103
|
builder.build
|
99
104
|
end
|
100
105
|
|
@@ -15,7 +15,7 @@ module CBin
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# 上传二进制 podspec
|
18
|
-
def push_binary_repo(binary_podsepc_json)
|
18
|
+
def push_binary_repo(binary_podsepc_json,isGenDylib=false)
|
19
19
|
argvs = [
|
20
20
|
"#{binary_source.name}", # repo
|
21
21
|
"#{binary_podsepc_json}", # spec
|
@@ -31,6 +31,9 @@ module CBin
|
|
31
31
|
if @verbose
|
32
32
|
argvs += ['--verbose']
|
33
33
|
end
|
34
|
+
if isGenDylib # 生成动态库
|
35
|
+
argvs += ['--dylib']
|
36
|
+
end
|
34
37
|
Pod::UI.message "上传二进制 argvs: #{argvs}"
|
35
38
|
push = Pod::Command::Bin::Repo::Push.new(CLAide::ARGV.new(argvs))
|
36
39
|
push.validate!
|
@@ -22,7 +22,7 @@ module CBin
|
|
22
22
|
@pushsourcespec = pushsourcespec # 推送源码
|
23
23
|
end
|
24
24
|
|
25
|
-
def upload
|
25
|
+
def upload(isGenDylib=false)
|
26
26
|
Dir.chdir(CBin::Config::Builder.instance.root_dir) do
|
27
27
|
# 创建binary-template.podsepc
|
28
28
|
# 上传二进制文件
|
@@ -30,9 +30,9 @@ module CBin
|
|
30
30
|
res_zip = curl_zip
|
31
31
|
if res_zip
|
32
32
|
filename = spec_creator
|
33
|
-
Pod::UI.message "上传二进制 podspec: #{filename}"
|
33
|
+
Pod::UI.message "上传二进制 podspec: #{filename} 是否动态库: #{isGenDylib}"
|
34
34
|
push_helper = CBin::Push::Helper.new()
|
35
|
-
push_helper.push_binary_repo(filename)
|
35
|
+
push_helper.push_binary_repo(filename,isGenDylib)
|
36
36
|
# 上传源码 podspec
|
37
37
|
if @pushsourcespec
|
38
38
|
Pod::UI.message "上传源码 podspec: #{@spec_creator.sourceSpecFilePath}"
|
@@ -14,7 +14,7 @@ module CBin
|
|
14
14
|
class XCBuilder
|
15
15
|
include Pod
|
16
16
|
include Pod::Config::Mixin
|
17
|
-
def initialize(spec,spec_sources)
|
17
|
+
def initialize(spec,spec_sources, support_maccatalyst=false,isGenDylib=false)
|
18
18
|
@spec = spec
|
19
19
|
@spec_sources = spec_sources.split(',') unless spec_sources.nil?
|
20
20
|
@name = "#{@spec.name}.podspec"
|
@@ -26,18 +26,19 @@ module CBin
|
|
26
26
|
@use_static_library = true
|
27
27
|
@enable_bitcode = false
|
28
28
|
@symbols = true
|
29
|
-
@support_maccatalyst =
|
29
|
+
@support_maccatalyst = support_maccatalyst # 默认不再支持MacCatalyst方式支持iOS应用在mac平台运行库生成
|
30
|
+
@support_dynamic = isGenDylib
|
30
31
|
|
31
32
|
target_dir = "#{Dir.pwd}/#{@spec.name}-#{@spec.version}"
|
32
|
-
UI.puts "build initialize...#{spec} target_dir:#{target_dir}"
|
33
|
+
UI.puts "build initialize...#{spec} target_dir:#{target_dir} 是否支持Mac Catalyst:#{support_maccatalyst} 是否生成动态库:#{isGenDylib}"
|
33
34
|
UI.puts "spec_sources:#{spec_sources}"
|
34
35
|
UI.puts "spec_sources:#{@spec_sources}"
|
35
36
|
end
|
36
37
|
|
37
38
|
def build
|
38
|
-
UI.section("Building
|
39
|
+
UI.section("Building xcframework #{@spec} 是否生成动态库:#{@support_dynamic}") do
|
39
40
|
config.static_library_enable = @use_static_library # 一定要配置 true,否则调用xcframework生成命令无效
|
40
|
-
frameworker = Frameworker.new(@name, @source, @spec_sources, @subspecs, @configuration, @force, @use_modular_headers, @enable_bitcode, @symbols, @support_maccatalyst)
|
41
|
+
frameworker = Frameworker.new(@name, @source, @spec_sources, @subspecs, @configuration, @force, @use_modular_headers, @enable_bitcode, @symbols, @support_maccatalyst, @support_dynamic)
|
41
42
|
frameworker.run
|
42
43
|
# 拷贝
|
43
44
|
cp_to_source_dir
|
@@ -6,14 +6,23 @@ require 'cocoapods-bb-bin/config/config'
|
|
6
6
|
module Pod
|
7
7
|
class Source
|
8
8
|
class Manager
|
9
|
+
|
10
|
+
def initLibEnv(isGenDylib=false)
|
11
|
+
@dylib = isGenDylib
|
12
|
+
end
|
13
|
+
|
9
14
|
# 源码 source
|
10
15
|
def code_source
|
11
16
|
source_with_name_or_url(CBin.config.code_repo_url)
|
12
17
|
end
|
13
18
|
|
14
|
-
# 二进制 source
|
19
|
+
# 二进制 source (区分动态库还是静态库)
|
15
20
|
def binary_source
|
16
|
-
|
21
|
+
if @dylib # 动态库
|
22
|
+
source_with_name_or_url(CBin.config.dylib_repo_url)
|
23
|
+
else # 静态库
|
24
|
+
source_with_name_or_url(CBin.config.binary_repo_url)
|
25
|
+
end
|
17
26
|
end
|
18
27
|
end
|
19
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-bb-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- humin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -70,7 +70,7 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 0.2.
|
73
|
+
version: 0.2.6
|
74
74
|
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '1.0'
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.2.
|
83
|
+
version: 0.2.6
|
84
84
|
- - "<"
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '1.0'
|
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
205
|
- !ruby/object:Gem::Version
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
|
-
rubygems_version: 3.4.
|
208
|
+
rubygems_version: 3.4.16
|
209
209
|
signing_key:
|
210
210
|
specification_version: 4
|
211
211
|
summary: cocoapods-bb-bin is a plugin which helps develpers switching pods between
|