cocoapods-kz 0.0.17 → 0.1.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 +4 -4
- data/lib/cocoapods-kz/gem_version.rb +1 -1
- data/lib/cocoapods-kz/helpers/kz_analyzer.rb +35 -21
- data/lib/cocoapods-kz/helpers/kz_generator_hmap.rb +5 -3
- data/lib/cocoapods-kz/helpers/kz_log.rb +5 -3
- data/lib/cocoapods-kz/helpers/kz_pod_target.rb +6 -0
- data/lib/cocoapods-kz/native/pod_target_integrator.rb +9 -0
- data/lib/cocoapods-kz/resources/kz_generate_xcode_env.sh +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7dc3d17ae852663339c556b8ce756e1d6072f409a0355857be8b4e853b28c5b4
|
|
4
|
+
data.tar.gz: 82f389a34190b85f569d70452af68a6648164a245e272211338df351c1d5ee6d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bb1640b3a067294022afd664ba651dc99321fcfbcb9215d7234a533dc50b72ec164749d26f5557582732a93ce2414ae327f818111216f5f6a682960ddb2a3fcf
|
|
7
|
+
data.tar.gz: 3159244490814d002460a3b6a843b36668735798c195963ed6934eb67ac11b564dabe50217204df291da76df5e222b3a0312c257f135b72b1ad2cc2379b196d8
|
|
@@ -48,22 +48,25 @@ module KZ
|
|
|
48
48
|
result = KZGlobalHelper.instance.pod_config_result_with_target(kz_pod_target)
|
|
49
49
|
temp_name = "#{kz_pod_target.product_name}_#{kz_pod_target.platform_name}"
|
|
50
50
|
if temp_repeat_product_name.include?(temp_name)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
if kz_pod_target.origin_should_build?
|
|
52
|
+
kz_pod_target.product_name = "#{kz_pod_target.name}.framework"
|
|
53
|
+
kz_pod_target.product_basename = kz_pod_target.name
|
|
54
|
+
if result
|
|
55
|
+
kz_pod_target.repair_modulemap_path = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{kz_pod_target.root_name}/#{kz_pod_target.product_name}/Modules/module.modulemap"
|
|
56
|
+
if kz_pod_target.origin_uses_swift?
|
|
57
|
+
kz_pod_target.repair_swift_include_path = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{kz_pod_target.root_name}/#{kz_pod_target.product_name}/Modules"
|
|
58
|
+
end
|
|
59
|
+
else
|
|
60
|
+
kz_pod_target.repair_modulemap_path = "#{kz_pod_target.native_pod_target.configuration_build_dir}/#{kz_pod_target.product_name}/Modules/module.modulemap"
|
|
61
|
+
if kz_pod_target.origin_uses_swift?
|
|
62
|
+
kz_pod_target.repair_swift_include_path = "#{kz_pod_target.native_pod_target.configuration_build_dir}/#{kz_pod_target.product_name}/Modules"
|
|
63
|
+
end
|
|
62
64
|
end
|
|
65
|
+
kz_pod_target.need_repair_module_import = true
|
|
66
|
+
KZLog.log("检测到多个target编译产物名均为:#{temp_name},已配置#{kz_pod_target.name}使用新产物名:#{kz_pod_target.name}.framework,并使用modulemap进行修复引用方式保持不变", :info)
|
|
63
67
|
end
|
|
64
|
-
kz_pod_target.
|
|
65
|
-
|
|
66
|
-
elsif kz_pod_target.origin_should_build?
|
|
68
|
+
kz_pod_target.have_same_root = true
|
|
69
|
+
elsif kz_pod_target
|
|
67
70
|
temp_repeat_product_name << "#{temp_name}"
|
|
68
71
|
end
|
|
69
72
|
|
|
@@ -83,7 +86,14 @@ module KZ
|
|
|
83
86
|
if @all_kz_pod_targets.has_key?(native_pod_target_name)
|
|
84
87
|
kz_pod_target = @all_kz_pod_targets[native_pod_target_name]
|
|
85
88
|
if !kz_pod_target.is_dev_pod && config_pod_mode != :kz_pod_origin_mode
|
|
86
|
-
|
|
89
|
+
# 如果没有走任何模式,则保持pod本身模式不变
|
|
90
|
+
if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_framework_mode
|
|
91
|
+
# framework模式优先
|
|
92
|
+
kz_pod_target.config_pod_mode = config_pod_mode unless kz_pod_target.config_pod_mode == :kz_pod_framework_mode
|
|
93
|
+
elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_code_mode
|
|
94
|
+
# code模式优先
|
|
95
|
+
kz_pod_target.config_pod_mode = config_pod_mode unless kz_pod_target.config_pod_mode == :kz_pod_code_mode
|
|
96
|
+
end
|
|
87
97
|
end
|
|
88
98
|
else
|
|
89
99
|
kz_pod_target = KZPodTarget.new(native_pod_target)
|
|
@@ -96,10 +106,16 @@ module KZ
|
|
|
96
106
|
end
|
|
97
107
|
end
|
|
98
108
|
kz_pod_target.force_config_pod_mode = get_force_config_pod_mode(kz_pod_target)
|
|
99
|
-
if
|
|
100
|
-
|
|
109
|
+
if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_origin_mode
|
|
110
|
+
# 没有指定任何模式,优先使用上次记录
|
|
111
|
+
kz_pod_target.config_pod_mode = use_framework_mode_from_lock_file?(kz_pod_target)
|
|
101
112
|
else
|
|
102
|
-
|
|
113
|
+
# 指定了模式,则走配置
|
|
114
|
+
if config_pod_mode != :kz_pod_origin_mode && !is_dev_pod
|
|
115
|
+
kz_pod_target.config_pod_mode = config_pod_mode
|
|
116
|
+
else
|
|
117
|
+
kz_pod_target.config_pod_mode = get_use_config_pod_mode(kz_pod_target)
|
|
118
|
+
end
|
|
103
119
|
end
|
|
104
120
|
@all_kz_pod_targets[native_pod_target_name] = kz_pod_target
|
|
105
121
|
|
|
@@ -159,8 +175,6 @@ module KZ
|
|
|
159
175
|
specify_pod_names_contain(kz_pod_target.name) ? :kz_pod_framework_mode : :kz_pod_code_mode
|
|
160
176
|
elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_code_mode
|
|
161
177
|
specify_pod_names_contain(kz_pod_target.name) ? :kz_pod_code_mode : :kz_pod_framework_mode
|
|
162
|
-
elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_origin_mode
|
|
163
|
-
use_framework_mode_from_lock_file?(kz_pod_target)
|
|
164
178
|
end
|
|
165
179
|
end
|
|
166
180
|
|
|
@@ -183,7 +197,7 @@ module KZ
|
|
|
183
197
|
def use_framework_mode_from_lock_file?(kz_pod_target)
|
|
184
198
|
olde_lock_file_content = KZGlobalHelper.instance.olde_lock_file_content
|
|
185
199
|
if olde_lock_file_content
|
|
186
|
-
pod_lock_config = olde_lock_file_content[kz_pod_target.name]
|
|
200
|
+
pod_lock_config = olde_lock_file_content["pod_targets"][kz_pod_target.name]
|
|
187
201
|
return :kz_pod_framework_mode if pod_lock_config && pod_lock_config['use_framework']
|
|
188
202
|
end
|
|
189
203
|
:kz_pod_code_mode
|
|
@@ -300,7 +300,9 @@ module KZ
|
|
|
300
300
|
|
|
301
301
|
yaml_header_info = {}
|
|
302
302
|
yaml_header_info["type"] = "directory"
|
|
303
|
-
|
|
303
|
+
# 使用origin_product_name,是因为kz_analyzer中对于拥有相同product_name的target的product_name改成了target_name
|
|
304
|
+
# 但是新版Xcode的编译过程包含一个scan步骤,会使用hamp中映射的framework,hmap中使用的是原始product_name,这里需要与之同步
|
|
305
|
+
yaml_header_info["name"] = built_products_dir + "#{kz_pod_target.origin_product_name}/Headers"
|
|
304
306
|
yaml_roots.append(yaml_header_info)
|
|
305
307
|
|
|
306
308
|
public_headers = kz_pod_target.public_headers
|
|
@@ -316,7 +318,7 @@ module KZ
|
|
|
316
318
|
|
|
317
319
|
yaml_modulemap_info = {}
|
|
318
320
|
yaml_modulemap_info["type"] = "directory"
|
|
319
|
-
yaml_modulemap_info["name"] = built_products_dir + "#{kz_pod_target.
|
|
321
|
+
yaml_modulemap_info["name"] = built_products_dir + "#{kz_pod_target.origin_product_name}/Modules"
|
|
320
322
|
yaml_roots.append(yaml_modulemap_info)
|
|
321
323
|
|
|
322
324
|
yaml_modulemap_contents = []
|
|
@@ -325,7 +327,7 @@ module KZ
|
|
|
325
327
|
yaml_modulemap_content = {}
|
|
326
328
|
yaml_modulemap_content["type"] = "file"
|
|
327
329
|
yaml_modulemap_content["name"] = "module.modulemap"
|
|
328
|
-
yaml_modulemap_content["external-contents"] = built_products_dir + "#{kz_pod_target.
|
|
330
|
+
yaml_modulemap_content["external-contents"] = built_products_dir + "#{kz_pod_target.origin_product_name}/Modules/module.modulemap"
|
|
329
331
|
yaml_modulemap_contents.append(yaml_modulemap_content)
|
|
330
332
|
|
|
331
333
|
pod_yaml_info
|
|
@@ -12,8 +12,10 @@ module KZ
|
|
|
12
12
|
normal: ""
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
def self.log(log_string, type = :normal)
|
|
15
|
+
def self.log(log_string, type = :normal, skip_count = 1)
|
|
16
16
|
if KZGlobalHelper.instance.debug || type == :error || type == :warning
|
|
17
|
+
loc = caller_locations(skip_count, 1).first
|
|
18
|
+
puts "#{loc.path}:#{loc.lineno} ⬇️"
|
|
17
19
|
puts "\e[36m【Cocoapods-kz】\e[0m#{@log_types[type]}【#{type}】#{@log_types[:reset]}#{log_string}"
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -21,8 +23,8 @@ module KZ
|
|
|
21
23
|
def self.run_shell(cmd)
|
|
22
24
|
stdout, stderr, status = Open3.capture3(cmd)
|
|
23
25
|
|
|
24
|
-
self.log(stdout) unless stdout.empty?
|
|
25
|
-
self.log(stderr, :error) unless stderr.empty?
|
|
26
|
+
self.log(stdout, :normal, 2) unless stdout.empty?
|
|
27
|
+
self.log(stderr, :error, 2) unless stderr.empty?
|
|
26
28
|
|
|
27
29
|
return status.success?
|
|
28
30
|
end
|
|
@@ -34,8 +34,12 @@ module KZ
|
|
|
34
34
|
attr_accessor :custom_origin_yaml_path
|
|
35
35
|
|
|
36
36
|
attr_accessor :platform_name
|
|
37
|
+
# 是否存在跟其他pod相同的root pod,一搬为同一个pod,再不同target中拆分为sub pod使用
|
|
38
|
+
attr_accessor :have_same_root
|
|
37
39
|
# target编译最终的产物名称
|
|
38
40
|
attr_accessor :product_name
|
|
41
|
+
# target原始产物名称
|
|
42
|
+
attr_accessor :origin_product_name
|
|
39
43
|
# 对应xcode配置PRODUCT_NAME,当多个target的PRODUCT_NAME相同时,需要手动修改,防止打包报错
|
|
40
44
|
attr_accessor :product_basename
|
|
41
45
|
# 当手动修改PRODUCT_NAME之后,产物名称会改变,在framework模式下对于OC组件需要使用modulemap文件配置寻找路径,对于Swift组件需要配置单独的include path
|
|
@@ -69,7 +73,9 @@ module KZ
|
|
|
69
73
|
@config_pod_mode = :kz_pod_origin_mode
|
|
70
74
|
|
|
71
75
|
@platform_name = native_pod_target.platform.symbolic_name
|
|
76
|
+
@have_same_root = false
|
|
72
77
|
@product_name = native_pod_target.origin_product_name
|
|
78
|
+
@origin_product_name = native_pod_target.origin_product_name
|
|
73
79
|
@product_basename = native_pod_target.origin_product_basename
|
|
74
80
|
@need_repair_module_import = false
|
|
75
81
|
@use_local_private_headers_path = false
|
|
@@ -14,6 +14,15 @@ module Pod
|
|
|
14
14
|
|
|
15
15
|
xcframeworks = target.xcframeworks.values.flatten
|
|
16
16
|
|
|
17
|
+
kz_pod_target = target.weakRef_kz_pod_target
|
|
18
|
+
if kz_pod_target&.have_same_root
|
|
19
|
+
# 如果产物相同,极大可能为sub pod模式,xcframework有相同处理指令,导致并发执行rsync报错
|
|
20
|
+
# 这里延迟0.2秒可以极大减少这种错误产生
|
|
21
|
+
script_content = File.read(target.copy_xcframeworks_script_path)
|
|
22
|
+
new_script_content = script_content.sub(/(install_xcframework "\$\{PODS_ROOT})/, "sleep 0.2\n\\1")
|
|
23
|
+
File.write(target.copy_xcframeworks_script_path, new_script_content)
|
|
24
|
+
end
|
|
25
|
+
|
|
17
26
|
if use_input_output_paths? && !xcframeworks.empty?
|
|
18
27
|
input_file_list_path = target.copy_xcframeworks_script_input_files_path
|
|
19
28
|
input_file_list_relative_path = "${PODS_ROOT}/#{input_file_list_path.relative_path_from(target.sandbox.root)}"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoapods-kz
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- yixiong
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-10-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|