cocoapods-kz 0.0.10 → 0.0.11
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/command/clean.rb +30 -23
- data/lib/cocoapods-kz/command/install.rb +13 -3
- data/lib/cocoapods-kz/command/update.rb +13 -3
- data/lib/cocoapods-kz/gem_version.rb +1 -1
- data/lib/cocoapods-kz/helpers/kz_framework_manager.rb +166 -0
- data/lib/cocoapods-kz/helpers/kz_generator.rb +6 -1
- data/lib/cocoapods-kz/helpers/kz_global_helper.rb +12 -0
- data/lib/cocoapods-kz/helpers/kz_log.rb +11 -0
- data/lib/cocoapods-kz/helpers/kz_pod_target.rb +10 -5
- data/lib/cocoapods-kz/native/file_accessor.rb +8 -3
- data/lib/cocoapods-kz/native/pod_target_integrator.rb +62 -0
- data/lib/cocoapods-kz/native/target_installer_helper.rb +8 -0
- data/lib/cocoapods-kz/native.rb +1 -0
- data/lib/cocoapods-kz/resources/arm64ToSimulator +0 -0
- data/lib/cocoapods-kz/resources/kz_refresh_pods_pbxproj.rb +2 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c043498bc76c19c7f49d1b6f64f00f10535f3512b9eb85853e213e4faa9b4d1c
|
4
|
+
data.tar.gz: e86ca96c094fb8f90d6434d1ce99421c0d4c2d2bca37b0e91f23639f841ea3df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15a3769ef86e707c147f1d8d0f3b03832c316a895869703e501fdf3efb9f365938548bc73b2db8331624d90c9ba714bb41763755696d42e7e64cf800c80729d0
|
7
|
+
data.tar.gz: 70b54fcc641af9ae839c916568e6af18444dc42d00054fcae859e64c9639b780a52eab7320582c15a1c392245fb0cad1cc43cc91557c4ae8716de04c419a6086
|
@@ -7,8 +7,7 @@ module Pod
|
|
7
7
|
self.summary = 'pod kz clean 用于清理缓存以一些报错文件'
|
8
8
|
|
9
9
|
self.description = <<-DESC
|
10
|
-
在pod update过程中由于代码变动,module
|
11
|
-
让Xcode重新生成
|
10
|
+
在pod update过程中由于代码变动,module缓存容易产生签名过期的问题,部分属性文件,跳转也会存在路径不对的情况,需要清理老旧缓存文件,让Xcode重新生成
|
12
11
|
DESC
|
13
12
|
|
14
13
|
self.arguments = [
|
@@ -17,42 +16,50 @@ module Pod
|
|
17
16
|
|
18
17
|
def self.options
|
19
18
|
[
|
20
|
-
|
19
|
+
["--xcode", "清除module缓存与头文件索引问题"],
|
20
|
+
["--framework", "清除所有自生成本地缓存的framework"],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
|
24
24
|
def initialize(argv)
|
25
|
-
clean_xcode = argv.flag?('xcode')
|
26
|
-
|
25
|
+
@clean_xcode = argv.flag?('xcode')
|
26
|
+
@clean_framework = argv.flag?('framework')
|
27
|
+
banner! unless @clean_xcode || @clean_framework
|
27
28
|
|
28
29
|
super
|
29
30
|
end
|
30
31
|
|
31
32
|
def run
|
32
|
-
|
33
|
-
|
33
|
+
if @clean_xcode
|
34
|
+
xcodeproj_path = Pathname.new(Dir[Pod::Config.instance.installation_root + "*.xcodeproj"].first)
|
35
|
+
return unless xcodeproj_path
|
34
36
|
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
xcode_derived_data_path = Pathname.new(Dir.home + "/Library/Developer/Xcode/DerivedData")
|
38
|
+
module_cache_noindex_path = xcode_derived_data_path + "ModuleCache.noindex"
|
39
|
+
FileUtils.rm_rf(module_cache_noindex_path) if module_cache_noindex_path.exist?
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
|
41
|
+
project_name = xcodeproj_path.basename.to_s.split(".").first
|
42
|
+
Dir.foreach(xcode_derived_data_path) do |file_name|
|
43
|
+
next if file_name == '.' || file_name == '..' || file_name == '.DS_Store'
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
if file_name.start_with?(project_name)
|
46
|
+
project_path = xcode_derived_data_path + file_name
|
47
|
+
index_noindex_path = project_path + "Index.noindex"
|
48
|
+
FileUtils.rm_rf(index_noindex_path) if index_noindex_path.exist?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
default_xcode_path = Pathname.new('/Applications/Xcode.app')
|
53
|
+
if default_xcode_path.exist?
|
54
|
+
system("osascript -e 'quit app \"Xcode\"'")
|
55
|
+
sleep 1
|
56
|
+
workspace_path = Dir[Pod::Config.instance.installation_root + "*.xcworkspace"].first
|
57
|
+
system("open \"#{workspace_path}\"")
|
47
58
|
end
|
48
59
|
end
|
49
60
|
|
50
|
-
|
51
|
-
|
52
|
-
system("osascript -e 'quit app \"Xcode\"'")
|
53
|
-
sleep 1
|
54
|
-
workspace_path = Dir[Pod::Config.instance.installation_root + "*.xcworkspace"].first
|
55
|
-
system("open \"#{workspace_path}\"")
|
61
|
+
if @clean_framework
|
62
|
+
FileUtils.rm_r(KZ::KZ_POD_CONFIG_ROOT) if File.exist?(KZ::KZ_POD_CONFIG_ROOT)
|
56
63
|
end
|
57
64
|
end
|
58
65
|
end
|
@@ -22,14 +22,16 @@ module Pod
|
|
22
22
|
['--framework', "后面需要跟上pod名(多个pod,使用英文逗号隔开),支持追加*匹配任意内容"],
|
23
23
|
['--code', "后面需要跟上pod名(多个pod,使用英文逗号隔开),支持追加*匹配任意内容"],
|
24
24
|
['--debug', "debug模式,会打印调试日志或生成调试文件"],
|
25
|
-
['--
|
25
|
+
['--framework-update', "build后不再生成frameowrk"],
|
26
|
+
['--arm64-simulator', "适配模拟器的arm64模式,会自动将只支持真机arm64的framework转成arm64模式"]
|
26
27
|
].concat(super).reject { |(name, _)| name == '--no-repo-update' }
|
27
28
|
end
|
28
29
|
|
29
30
|
def initialize(argv)
|
30
31
|
use_code_tag = argv.flag?('code')
|
31
32
|
use_framework_tag = argv.flag?('framework')
|
32
|
-
banner!
|
33
|
+
banner! unless isOptionsArgvFlag(argv.options.keys)
|
34
|
+
banner! if (use_code_tag && use_framework_tag)
|
33
35
|
|
34
36
|
KZ::KZGlobalHelper.instance.analyze_special_parameters(use_code_tag, use_framework_tag, argv.arguments!)
|
35
37
|
if Pod.match_version?('~> 1.11')
|
@@ -37,12 +39,20 @@ module Pod
|
|
37
39
|
KZ::KZGlobalHelper.instance.generate_kz_pod_targets = true
|
38
40
|
end
|
39
41
|
KZ::KZGlobalHelper.instance.debug = true if argv.flag?('debug')
|
40
|
-
KZ::KZGlobalHelper.instance.
|
42
|
+
KZ::KZGlobalHelper.instance.arm64_simulator = true if argv.flag?('arm64-simulator')
|
43
|
+
framework_update = argv.flag?('framework-update')
|
44
|
+
KZ::KZGlobalHelper.instance.disable_generate_framework = true if (framework_update != nil && framework_update == false)
|
41
45
|
|
42
46
|
super
|
43
47
|
@additional_args = argv.remainder!
|
44
48
|
end
|
45
49
|
|
50
|
+
def isOptionsArgvFlag(all_flags)
|
51
|
+
return true if all_flags.empty?
|
52
|
+
supported_flags = ["repo-update", "deployment", "clean-install", "code", "framework", "debug", "framework-update", "arm64-simulator"]
|
53
|
+
return (all_flags & supported_flags) == all_flags
|
54
|
+
end
|
55
|
+
|
46
56
|
def run
|
47
57
|
KZ::KZGlobalHelper.instance.prepare
|
48
58
|
install = Pod::Command::Install.new(CLAide::ARGV.new([*@additional_args]))
|
@@ -22,14 +22,16 @@ module Pod
|
|
22
22
|
['--framework', "后面需要跟上pod名(多个pod,使用英文逗号隔开),支持追加*匹配任意内容"],
|
23
23
|
['--code', "后面需要跟上pod名(多个pod,使用英文逗号隔开),支持追加*匹配任意内容"],
|
24
24
|
['--debug', "debug模式,会打印调试日志或生成调试文件"],
|
25
|
-
['--no-framework-update', "build后不再生成frameowrk"]
|
25
|
+
['--no-framework-update', "build后不再生成frameowrk"],
|
26
|
+
['--arm64-simulator', "适配模拟器的arm64模式,会自动将只支持真机arm64的framework转成arm64模式"]
|
26
27
|
].concat(super)
|
27
28
|
end
|
28
29
|
|
29
30
|
def initialize(argv)
|
30
31
|
use_code_tag = argv.flag?('code')
|
31
32
|
use_framework_tag = argv.flag?('framework')
|
32
|
-
banner!
|
33
|
+
banner! unless isOptionsArgvFlag(argv.options.keys)
|
34
|
+
banner! if (use_code_tag && use_framework_tag)
|
33
35
|
|
34
36
|
KZ::KZGlobalHelper.instance.analyze_special_parameters(use_code_tag, use_framework_tag, argv.arguments!)
|
35
37
|
if Pod.match_version?('~> 1.11')
|
@@ -37,12 +39,20 @@ module Pod
|
|
37
39
|
KZ::KZGlobalHelper.instance.generate_kz_pod_targets = true
|
38
40
|
end
|
39
41
|
KZ::KZGlobalHelper.instance.debug = true if argv.flag?('debug')
|
40
|
-
KZ::KZGlobalHelper.instance.
|
42
|
+
KZ::KZGlobalHelper.instance.arm64_simulator = true if argv.flag?('arm64-simulator')
|
43
|
+
framework_update = argv.flag?('framework-update')
|
44
|
+
KZ::KZGlobalHelper.instance.disable_generate_framework = true if (framework_update != nil && framework_update == false)
|
41
45
|
|
42
46
|
super
|
43
47
|
@additional_args = argv.remainder!
|
44
48
|
end
|
45
49
|
|
50
|
+
def isOptionsArgvFlag(all_flags)
|
51
|
+
return true if all_flags.empty?
|
52
|
+
supported_flags = ["sources", "exclude-pods", "clean-install", "code", "framework", "debug", "framework-update", "arm64-simulator"]
|
53
|
+
return (all_flags & supported_flags) == all_flags
|
54
|
+
end
|
55
|
+
|
46
56
|
def run
|
47
57
|
KZ::KZGlobalHelper.instance.prepare
|
48
58
|
update = Pod::Command::Update.new(CLAide::ARGV.new([*@additional_args]))
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require_relative 'kz_pod_target'
|
2
2
|
require_relative 'kz_global_helper'
|
3
3
|
require_relative 'kz_config_result'
|
4
|
+
require 'tmpdir'
|
5
|
+
require_relative 'kz_log'
|
4
6
|
|
5
7
|
module KZ
|
6
8
|
class KZFrameworkManager
|
@@ -48,5 +50,169 @@ module KZ
|
|
48
50
|
@@all_resources_cache_info
|
49
51
|
end
|
50
52
|
|
53
|
+
def self.handle_origin_framework(origin_frameworks, kz_pod_target)
|
54
|
+
new_frameworks = []
|
55
|
+
destination_path = kz_pod_target.pod_config_cache_path(false, true)
|
56
|
+
origin_frameworks.each do |origin_framework_path|
|
57
|
+
if kz_pod_target.disable_to_simulator_frameworks.include?(origin_framework_path)
|
58
|
+
new_frameworks.append(origin_framework_path)
|
59
|
+
else
|
60
|
+
new_framework_path = self.convert_arm64_to_simulator(origin_framework_path, destination_path)
|
61
|
+
if new_framework_path == origin_framework_path
|
62
|
+
kz_pod_target.disable_to_simulator_frameworks.append(origin_framework_path)
|
63
|
+
end
|
64
|
+
new_frameworks.append(new_framework_path)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
new_frameworks
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.convert_arm64_to_simulator(origin_framework_path, destination_path)
|
71
|
+
framework_name = origin_framework_path.basename.to_s
|
72
|
+
if framework_name.end_with?(".framework")
|
73
|
+
framework_basename = framework_name.chomp(".framework")
|
74
|
+
xcframework_path = destination_path + "#{framework_basename}.xcframework"
|
75
|
+
return xcframework_path if File.exist?(xcframework_path) && !Dir.empty?(xcframework_path)
|
76
|
+
|
77
|
+
if self.create_xcframework(origin_framework_path, origin_framework_path, framework_basename, xcframework_path)
|
78
|
+
return xcframework_path
|
79
|
+
else
|
80
|
+
return origin_framework_path
|
81
|
+
end
|
82
|
+
elsif framework_name.end_with?(".xcframework")
|
83
|
+
framework_basename = framework_name.chomp(".xcframework")
|
84
|
+
xcframework_path = destination_path + "#{framework_basename}.xcframework"
|
85
|
+
return xcframework_path if File.exist?(xcframework_path)
|
86
|
+
|
87
|
+
info_plist_path = origin_framework_path + "Info.plist"
|
88
|
+
return origin_framework_path unless File.exist?(info_plist_path)
|
89
|
+
|
90
|
+
info_plist = Xcodeproj::Plist.read_from_path(info_plist_path)
|
91
|
+
available_libraries = info_plist["AvailableLibraries"]
|
92
|
+
available_libraries.each do |available_librarie|
|
93
|
+
if available_librarie["SupportedPlatformVariant"] == "simulator" && available_librarie["SupportedArchitectures"].include?("arm64")
|
94
|
+
return origin_framework_path
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# 找到真机arm64 framework与模拟器x86_64 framework
|
99
|
+
xc_framework_path = ""
|
100
|
+
xc_simulator_framework_path = ""
|
101
|
+
available_libraries.each do |available_librarie|
|
102
|
+
if available_librarie["SupportedPlatformVariant"] == "simulator"
|
103
|
+
if available_librarie["SupportedArchitectures"].include?("x86_64")
|
104
|
+
xc_simulator_framework_path = origin_framework_path + available_librarie["LibraryIdentifier"] + available_librarie["LibraryPath"]
|
105
|
+
end
|
106
|
+
elsif available_librarie["SupportedPlatform"] == "ios"
|
107
|
+
if available_librarie["SupportedArchitectures"].include?("arm64")
|
108
|
+
xc_framework_path = origin_framework_path + available_librarie["LibraryIdentifier"] + available_librarie["LibraryPath"]
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
xc_simulator_framework_path = xc_framework_path unless xc_simulator_framework_path != ""
|
114
|
+
if self.create_xcframework(xc_framework_path, xc_simulator_framework_path, framework_basename, xcframework_path)
|
115
|
+
return xcframework_path
|
116
|
+
else
|
117
|
+
return origin_framework_path
|
118
|
+
end
|
119
|
+
else
|
120
|
+
return origin_framework_path
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.create_xcframework(origin_framework_path, origin_simulator_framework_path, framework_basename, destination_xcframework_path)
|
125
|
+
tempdir = Pathname(Dir.mktmpdir)
|
126
|
+
arm64_path = tempdir + "arm64"
|
127
|
+
FileUtils.mkdir_p(arm64_path)
|
128
|
+
arm64_framework_path = arm64_path + "#{framework_basename}.framework"
|
129
|
+
FileUtils.cp_r(origin_framework_path, arm64_framework_path)
|
130
|
+
arm64_framework_exe_path = arm64_framework_path + framework_basename
|
131
|
+
if self.contain_multiple_arch?(arm64_framework_exe_path)
|
132
|
+
system("lipo #{arm64_framework_exe_path} -thin arm64 -output #{arm64_framework_exe_path} #{KZGlobalHelper.instance.debug_shell_log_tag}")
|
133
|
+
end
|
134
|
+
|
135
|
+
simulator_path = tempdir + "simulator"
|
136
|
+
FileUtils.mkdir_p(simulator_path)
|
137
|
+
simulator_framework_path = simulator_path + "#{framework_basename}.framework"
|
138
|
+
FileUtils.cp_r(origin_simulator_framework_path, simulator_framework_path)
|
139
|
+
simulator_framework_exe_path = simulator_framework_path + framework_basename
|
140
|
+
contain_x8664 = self.contain_x8664?(simulator_framework_exe_path)
|
141
|
+
if contain_x8664
|
142
|
+
system("lipo #{simulator_framework_exe_path} -thin x86_64 -output #{simulator_framework_exe_path} #{KZGlobalHelper.instance.debug_shell_log_tag}")
|
143
|
+
else
|
144
|
+
FileUtils.rm(simulator_framework_exe_path)
|
145
|
+
end
|
146
|
+
|
147
|
+
temp_framwork_exe_path = tempdir + "#{framework_basename}_arm64_simulator"
|
148
|
+
|
149
|
+
if self.is_dynamic_library?(origin_framework_path + framework_basename)
|
150
|
+
xcrun_vtool_show_result = `xcrun vtool -arch arm64 -show #{origin_framework_path + framework_basename}`.lines.map(&:chomp)
|
151
|
+
framework_sdk_version = "16.0"
|
152
|
+
framework_deployment_version = "12.0"
|
153
|
+
reach_cmd_tag = false
|
154
|
+
xcrun_vtool_show_result.each do |line|
|
155
|
+
reach_cmd_tag = false if line.start_with?("Load command")
|
156
|
+
|
157
|
+
line_infos = line.lstrip.split
|
158
|
+
next unless line_infos.count == 2
|
159
|
+
|
160
|
+
if line_infos.first == "cmd" && line_infos.last == "LC_VERSION_MIN_IPHONEOS"
|
161
|
+
reach_cmd_tag = true
|
162
|
+
end
|
163
|
+
|
164
|
+
if reach_cmd_tag
|
165
|
+
if line_infos.include?("sdk")
|
166
|
+
framework_sdk_version = line_infos.last
|
167
|
+
elsif line_infos.include?("version")
|
168
|
+
framework_deployment_version = line_infos.last
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
xcrun_vtool_set_result = system("xcrun vtool -arch arm64 -set-build-version 7 #{framework_deployment_version} #{framework_sdk_version} -replace -output #{temp_framwork_exe_path} #{arm64_framework_exe_path}")
|
173
|
+
unless xcrun_vtool_set_result
|
174
|
+
FileUtils.rm_r(tempdir)
|
175
|
+
return false
|
176
|
+
end
|
177
|
+
else
|
178
|
+
ar_x_path = tempdir + "ar_x"
|
179
|
+
FileUtils.mkdir_p(ar_x_path)
|
180
|
+
ar_x_success = system("cd #{ar_x_path}; ar x #{arm64_framework_exe_path}")
|
181
|
+
if ar_x_success
|
182
|
+
system("for file in #{ar_x_path}/*.o; do #{ARM64_TO_SIMULATOR_EXECUTE_PATH} $file; done")
|
183
|
+
system("ar crv #{temp_framwork_exe_path} #{ar_x_path}/*.o &> /dev/null")
|
184
|
+
else
|
185
|
+
FileUtils.rm_r(tempdir)
|
186
|
+
return false
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
if contain_x8664
|
191
|
+
system("lipo -create #{temp_framwork_exe_path} #{simulator_framework_exe_path} -output #{simulator_framework_exe_path} #{KZGlobalHelper.instance.debug_shell_log_tag}")
|
192
|
+
else
|
193
|
+
FileUtils.mv("#{temp_framwork_exe_path}", simulator_framework_exe_path)
|
194
|
+
end
|
195
|
+
FileUtils.mkdir_p(destination_xcframework_path) unless File.exist?(destination_xcframework_path)
|
196
|
+
system("xcodebuild -create-xcframework -framework $(readlink -f '#{arm64_framework_path}') -framework $(readlink -f '#{simulator_framework_path}') -output #{destination_xcframework_path} #{KZGlobalHelper.instance.debug_shell_log_tag}")
|
197
|
+
FileUtils.rm_r(tempdir)
|
198
|
+
|
199
|
+
return true
|
200
|
+
end
|
201
|
+
|
202
|
+
def self.is_dynamic_library?(file_path)
|
203
|
+
file_result = `file -b #{file_path}`
|
204
|
+
return file_result.include?("dynamically linked shared library")
|
205
|
+
end
|
206
|
+
|
207
|
+
def self.contain_x8664?(file_path)
|
208
|
+
file_result = `file -b #{file_path}`
|
209
|
+
return file_result.include?("for architecture x86_64")
|
210
|
+
end
|
211
|
+
|
212
|
+
def self.contain_multiple_arch?(file_path)
|
213
|
+
file_result = `lipo -info #{file_path}`
|
214
|
+
return file_result.include?("Architectures in the fat file")
|
215
|
+
end
|
216
|
+
|
51
217
|
end
|
52
218
|
end
|
@@ -108,6 +108,8 @@ module KZ
|
|
108
108
|
|
109
109
|
if all_repair_hmap_info.count > 0
|
110
110
|
hmap_cache_path = kz_pod_target.pod_config_cache_path(false)
|
111
|
+
FileUtils.mkdir_p(hmap_cache_path) unless File.exist?(hmap_cache_path)
|
112
|
+
|
111
113
|
save_hmap_file(all_repair_hmap_info, hmap_cache_path, target_name + '_repair')
|
112
114
|
kz_pod_target.repair_header_search_path = hmap_cache_path + "#{target_name}_repair.hmap"
|
113
115
|
end
|
@@ -117,6 +119,8 @@ module KZ
|
|
117
119
|
private_hamp_info = private_hmap_info(kz_pod_target)
|
118
120
|
if private_hamp_info.count > 0
|
119
121
|
hmap_cache_path = kz_pod_target.pod_config_cache_path(false)
|
122
|
+
FileUtils.mkdir_p(hmap_cache_path) unless File.exist?(hmap_cache_path)
|
123
|
+
|
120
124
|
save_hmap_file(private_hamp_info, hmap_cache_path, target_name)
|
121
125
|
kz_pod_target.private_header_search_path = hmap_cache_path + "#{target_name}.hmap"
|
122
126
|
end
|
@@ -141,13 +145,14 @@ module KZ
|
|
141
145
|
|
142
146
|
def clean_hmap_cache(kz_pod_target)
|
143
147
|
hmap_cache_path = kz_pod_target.pod_config_cache_path(false)
|
148
|
+
|
144
149
|
Dir.foreach(hmap_cache_path) do |file_name|
|
145
150
|
next if file_name == '.' || file_name == '..' || file_name == '.DS_Store'
|
146
151
|
|
147
152
|
if file_name.end_with?(".hmap", ".json")
|
148
153
|
FileUtils.rm(hmap_cache_path + file_name) if File.exist?(hmap_cache_path + file_name)
|
149
154
|
end
|
150
|
-
end
|
155
|
+
end if File.exist?(hmap_cache_path)
|
151
156
|
end
|
152
157
|
|
153
158
|
def repair_hmap_info(kz_pod_target)
|
@@ -18,6 +18,7 @@ module KZ
|
|
18
18
|
|
19
19
|
HMAP_EXECUTE_PATH = File.dirname(__FILE__) + '/../resources/hmap'
|
20
20
|
FLEX_COMPLIER_PATH = KZ_POD_CONFIG_SUPPORT_FILES + 'FlexCompiler'
|
21
|
+
ARM64_TO_SIMULATOR_EXECUTE_PATH = File.dirname(__FILE__) + '/../resources/arm64ToSimulator'
|
21
22
|
KZ_GENERATOR_FRAMEWORK_PATH = KZ_POD_CONFIG_SUPPORT_FILES + 'kz_generator_framework.sh'
|
22
23
|
KZ_XML_BUILD_PATH = KZ_POD_CONFIG_SUPPORT_FILES + 'kz_xml_build.sh'
|
23
24
|
KZ_LOCK_FILE_PATH = KZ_POD_CONFIG_ROOT + 'KZConfigLock'
|
@@ -48,6 +49,8 @@ module KZ
|
|
48
49
|
attr_accessor :kz_config_lock
|
49
50
|
attr_accessor :disable_generate_framework
|
50
51
|
attr_accessor :generate_kz_pod_targets
|
52
|
+
attr_accessor :debug_shell_log_tag
|
53
|
+
attr_accessor :arm64_simulator
|
51
54
|
|
52
55
|
private_class_method :new
|
53
56
|
|
@@ -60,6 +63,15 @@ module KZ
|
|
60
63
|
@disable_generate_framework = false
|
61
64
|
@generate_kz_pod_targets = false
|
62
65
|
@olde_lock_file_content = nil
|
66
|
+
@debug_shell_log_tag = "&> /dev/null"
|
67
|
+
@arm64_simulator = false
|
68
|
+
end
|
69
|
+
|
70
|
+
def debug=(value)
|
71
|
+
@debug = value
|
72
|
+
if debug
|
73
|
+
@debug_shell_log_tag = ""
|
74
|
+
end
|
63
75
|
end
|
64
76
|
|
65
77
|
@@instance = nil
|
@@ -46,6 +46,8 @@ module KZ
|
|
46
46
|
|
47
47
|
attr_accessor :use_modulemap
|
48
48
|
|
49
|
+
attr_accessor :disable_to_simulator_frameworks
|
50
|
+
|
49
51
|
def initialize(native_pod_target)
|
50
52
|
@native_pod_target = native_pod_target
|
51
53
|
@name = native_pod_target.name
|
@@ -64,6 +66,7 @@ module KZ
|
|
64
66
|
@use_local_private_headers_path = false
|
65
67
|
@force_load = false
|
66
68
|
@use_modulemap = true
|
69
|
+
@disable_to_simulator_frameworks = []
|
67
70
|
|
68
71
|
native_pod_target.file_accessors.each do |file_accessor|
|
69
72
|
file_accessor.kz_pod_target = self
|
@@ -188,6 +191,8 @@ module KZ
|
|
188
191
|
|
189
192
|
# 直接用于配置HEADER_SEARCH_PATHS
|
190
193
|
def header_search_paths(custom_paths)
|
194
|
+
return '' unless current_should_build?
|
195
|
+
|
191
196
|
header_search_paths = ''
|
192
197
|
header_search_paths = KZ.deal_path_for_xcconfig(@private_header_search_path, true) if @private_header_search_path
|
193
198
|
repair_header_search_paths = self.all_repair_header_search_paths.join(' ')
|
@@ -226,11 +231,11 @@ module KZ
|
|
226
231
|
end
|
227
232
|
|
228
233
|
# 获取target对应的配置根目录,部分文件需要依赖版本进行存储
|
229
|
-
def pod_config_cache_path(concat_version)
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
+
def pod_config_cache_path(concat_version, vendored_framework = false)
|
235
|
+
kz_target_config_folder = KZ_POD_CONFIG_POD_TARGETS + @name
|
236
|
+
kz_target_config_folder += "vendored_framework" if vendored_framework
|
237
|
+
kz_target_config_folder += @version if concat_version
|
238
|
+
kz_target_config_folder
|
234
239
|
end
|
235
240
|
|
236
241
|
# 获取target中的module name,默认为product_module_name与target.name也相同。
|
@@ -72,10 +72,15 @@ module Pod
|
|
72
72
|
|
73
73
|
alias_method :origin_vendored_frameworks, :vendored_frameworks
|
74
74
|
def vendored_frameworks
|
75
|
-
|
76
|
-
if !self.spec.test_specification && result
|
75
|
+
if self.kz_pod_target
|
77
76
|
frameworks = origin_vendored_frameworks
|
78
|
-
frameworks.
|
77
|
+
if KZ::KZGlobalHelper.instance.arm64_simulator && frameworks.count > 0
|
78
|
+
frameworks = KZ::KZFrameworkManager.handle_origin_framework(frameworks, self.kz_pod_target)
|
79
|
+
end
|
80
|
+
result = KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
|
81
|
+
if !self.spec.test_specification && result
|
82
|
+
frameworks.concat(result.get_framework_paths)
|
83
|
+
end
|
79
84
|
frameworks
|
80
85
|
else
|
81
86
|
origin_vendored_frameworks
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Pod
|
2
|
+
class Installer
|
3
|
+
class Xcode
|
4
|
+
class PodsProjectGenerator
|
5
|
+
|
6
|
+
class PodTargetIntegrator
|
7
|
+
$global_output_paths_avoid_duplicate = []
|
8
|
+
|
9
|
+
def add_copy_xcframeworks_script_phase(native_target)
|
10
|
+
script_path = "${PODS_ROOT}/#{target.copy_xcframeworks_script_path.relative_path_from(target.sandbox.root)}"
|
11
|
+
|
12
|
+
input_paths_by_config = {}
|
13
|
+
output_paths_by_config = {}
|
14
|
+
|
15
|
+
xcframeworks = target.xcframeworks.values.flatten
|
16
|
+
|
17
|
+
if use_input_output_paths? && !xcframeworks.empty?
|
18
|
+
input_file_list_path = target.copy_xcframeworks_script_input_files_path
|
19
|
+
input_file_list_relative_path = "${PODS_ROOT}/#{input_file_list_path.relative_path_from(target.sandbox.root)}"
|
20
|
+
input_paths_key = UserProjectIntegrator::TargetIntegrator::XCFileListConfigKey.new(input_file_list_path, input_file_list_relative_path)
|
21
|
+
input_paths = input_paths_by_config[input_paths_key] = [script_path]
|
22
|
+
|
23
|
+
framework_paths = xcframeworks.map { |xcf| "${PODS_ROOT}/#{xcf.path.relative_path_from(target.sandbox.root)}" }
|
24
|
+
input_paths.concat framework_paths
|
25
|
+
|
26
|
+
output_file_list_path = target.copy_xcframeworks_script_output_files_path
|
27
|
+
output_file_list_relative_path = "${PODS_ROOT}/#{output_file_list_path.relative_path_from(target.sandbox.root)}"
|
28
|
+
output_paths_key = UserProjectIntegrator::TargetIntegrator::XCFileListConfigKey.new(output_file_list_path, output_file_list_relative_path)
|
29
|
+
output_paths_by_config[output_paths_key] = xcframeworks.map do |xcf|
|
30
|
+
"#{Target::BuildSettings::XCFRAMEWORKS_BUILD_DIR_VARIABLE}/#{xcf.target_name}/#{xcf.name}.framework"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
if xcframeworks.empty?
|
35
|
+
UserProjectIntegrator::TargetIntegrator.remove_copy_xcframeworks_script_phase_from_target(native_target)
|
36
|
+
else
|
37
|
+
if target_installation_result.target.scope_suffix
|
38
|
+
output_paths_by_config.each do |key, value|
|
39
|
+
if value && value.count > 0
|
40
|
+
need_remove_paths = []
|
41
|
+
value.each do |path|
|
42
|
+
if $global_output_paths_avoid_duplicate.include?(path)
|
43
|
+
need_remove_paths.append(path)
|
44
|
+
else
|
45
|
+
$global_output_paths_avoid_duplicate.append(path)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
need_remove_paths.each do |need_remove_path|
|
49
|
+
value.delete(need_remove_path)
|
50
|
+
end if need_remove_paths.count > 0
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
UserProjectIntegrator::TargetIntegrator.create_or_update_copy_xcframeworks_script_phase_to_target(
|
55
|
+
native_target, script_path, input_paths_by_config, output_paths_by_config)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -37,6 +37,10 @@ module Pod
|
|
37
37
|
end
|
38
38
|
xcconfig.attributes['HEADER_SEARCH_PATHS'] = main_hamp_search_path
|
39
39
|
xcconfig.attributes['USE_HEADERMAP'] = 'NO'
|
40
|
+
if KZ::KZGlobalHelper.instance.arm64_simulator
|
41
|
+
xcconfig.attributes.delete("EXCLUDED_ARCHS[sdk=iphonesimulator*]")
|
42
|
+
xcconfig.attributes['VALID_ARCHS'] = 'arm64 arm64_32 x86_64'
|
43
|
+
end
|
40
44
|
|
41
45
|
kz_update_xcconfig_file(xcconfig, path)
|
42
46
|
return
|
@@ -55,6 +59,10 @@ module Pod
|
|
55
59
|
if kz_pod_target.force_load
|
56
60
|
xcconfig.attributes['KZ_FIX_FORCE_LOAD_EXE_FOLDER'] = kz_pod_target.configuration_build_dir(true)
|
57
61
|
end
|
62
|
+
if KZ::KZGlobalHelper.instance.arm64_simulator
|
63
|
+
xcconfig.attributes.delete("EXCLUDED_ARCHS[sdk=iphonesimulator*]")
|
64
|
+
xcconfig.attributes['VALID_ARCHS'] = 'arm64 arm64_32 x86_64'
|
65
|
+
end
|
58
66
|
|
59
67
|
add_repair_modulemap(xcconfig, kz_pod_target.all_repair_modulemap_paths, kz_pod_target.current_uses_swift?)
|
60
68
|
add_repair_swift_include_path(xcconfig, kz_pod_target.all_repair_swift_include_paths, kz_pod_target.current_uses_swift?)
|
data/lib/cocoapods-kz/native.rb
CHANGED
Binary file
|
@@ -8,6 +8,8 @@ if !File.exist?(current_pods_pbxproj_path) || !FileUtils.compare_file(current_po
|
|
8
8
|
FileUtils.cp_r(temp_pods_pbxproj_path, current_pods_pbxproj_path)
|
9
9
|
end
|
10
10
|
|
11
|
+
FileUtils.rm_r(Pathname(temp_pods_pbxproj_path).dirname)
|
12
|
+
|
11
13
|
xcode_running = system("ps aux | grep '[X]code' > /dev/null 2>&1")
|
12
14
|
if xcode_running
|
13
15
|
system("touch #{current_pods_pbxproj_path}")
|
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.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yixiong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/cocoapods-kz/helpers/kz_framework_manager.rb
|
60
60
|
- lib/cocoapods-kz/helpers/kz_generator.rb
|
61
61
|
- lib/cocoapods-kz/helpers/kz_global_helper.rb
|
62
|
+
- lib/cocoapods-kz/helpers/kz_log.rb
|
62
63
|
- lib/cocoapods-kz/helpers/kz_pod_target.rb
|
63
64
|
- lib/cocoapods-kz/helpers/repair_dynamic_swift.rb
|
64
65
|
- lib/cocoapods-kz/helpers/repair_module_import.rb
|
@@ -69,11 +70,13 @@ files:
|
|
69
70
|
- lib/cocoapods-kz/native/installer.rb
|
70
71
|
- lib/cocoapods-kz/native/pod_target.rb
|
71
72
|
- lib/cocoapods-kz/native/pod_target_installer.rb
|
73
|
+
- lib/cocoapods-kz/native/pod_target_integrator.rb
|
72
74
|
- lib/cocoapods-kz/native/pods_project_writer.rb
|
73
75
|
- lib/cocoapods-kz/native/specification.rb
|
74
76
|
- lib/cocoapods-kz/native/target.rb
|
75
77
|
- lib/cocoapods-kz/native/target_installer_helper.rb
|
76
78
|
- lib/cocoapods-kz/resources/FlexCompiler
|
79
|
+
- lib/cocoapods-kz/resources/arm64ToSimulator
|
77
80
|
- lib/cocoapods-kz/resources/hmap
|
78
81
|
- lib/cocoapods-kz/resources/kz_fix_force_load_exe.sh
|
79
82
|
- lib/cocoapods-kz/resources/kz_generator_framework.sh
|