cocoapods-kz 0.0.3 → 0.0.4
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/install.rb +6 -5
- data/lib/cocoapods-kz/command/repair.rb +2 -2
- data/lib/cocoapods-kz/command/update.rb +6 -5
- data/lib/cocoapods-kz/gem_version.rb +1 -1
- data/lib/cocoapods-kz/helpers/kz_analyzer.rb +38 -3
- data/lib/cocoapods-kz/helpers/kz_framework_manager.rb +1 -1
- data/lib/cocoapods-kz/helpers/kz_generator.rb +256 -0
- data/lib/cocoapods-kz/helpers/{global_helper.rb → kz_global_helper.rb} +23 -10
- data/lib/cocoapods-kz/helpers/kz_pod_target.rb +76 -22
- data/lib/cocoapods-kz/helpers/repair_dynamic_swift.rb +2 -2
- data/lib/cocoapods-kz/helpers/repair_module_import.rb +16 -25
- data/lib/cocoapods-kz/native/analyzer.rb +4 -1
- data/lib/cocoapods-kz/native/dls.rb +2 -1
- data/lib/cocoapods-kz/native/file_accessor.rb +17 -0
- data/lib/cocoapods-kz/native/installer.rb +9 -24
- data/lib/cocoapods-kz/native/pod_target.rb +17 -0
- data/lib/cocoapods-kz/native/pod_target_installer.rb +30 -0
- data/lib/cocoapods-kz/native/target.rb +34 -0
- data/lib/cocoapods-kz/native/target_installer_helper.rb +105 -0
- data/lib/cocoapods-kz/native.rb +4 -1
- metadata +8 -8
- data/lib/cocoapods-kz/helpers/build_framework_config.rb +0 -53
- data/lib/cocoapods-kz/helpers/create_hamp.rb +0 -236
- data/lib/cocoapods-kz/helpers/strip_framework_config.rb +0 -40
- data/lib/cocoapods-kz/helpers/xml_build_config.rb +0 -57
- data/lib/cocoapods-kz/native/user_project_integrator.rb +0 -16
@@ -1,31 +1,45 @@
|
|
1
1
|
require 'cocoapods'
|
2
2
|
require 'fileutils'
|
3
|
-
|
3
|
+
require 'weakref'
|
4
|
+
require_relative 'kz_global_helper'
|
4
5
|
|
5
6
|
module KZ
|
7
|
+
|
6
8
|
class KZPodTarget
|
7
9
|
|
8
10
|
attr_reader :native_pod_target
|
9
11
|
attr_reader :name
|
12
|
+
# 部分pod配置了subspec,此时获取的name为cocoapods处理之后的名字,可以通过root_name拿到pod本名
|
10
13
|
attr_reader :root_name
|
11
|
-
attr_reader :product_name
|
12
14
|
attr_reader :version
|
15
|
+
# 当前target所有直接或间接依赖的target信息,是一个hash,key为target名字,value为KZPodTarget对象
|
13
16
|
attr_accessor :dependent_target_info
|
17
|
+
# 所有通过kz_pod,:dependency手动配置的依赖target
|
14
18
|
attr_accessor :repair_dependent_target_info
|
15
19
|
attr_reader :repair_import
|
16
20
|
attr_accessor :is_dev_pod
|
21
|
+
# target生成pod的模式,:kz_pod_origin_mode原始模式,也即代码模式,:kz_pod_code_mode代码模式,:kz_pod_framework_mod为framework模式
|
17
22
|
attr_accessor :config_pod_mode
|
23
|
+
# pod kz install/update 中指定的pod模式,优先级最大
|
18
24
|
attr_accessor :force_config_pod_mode
|
19
25
|
|
26
|
+
# 用于临时保存hamp过程的配置
|
20
27
|
attr_accessor :private_header_search_path
|
21
28
|
attr_accessor :repair_header_search_path
|
22
|
-
|
29
|
+
|
30
|
+
# target编译最终的产物名称
|
31
|
+
attr_accessor :product_name
|
32
|
+
# 对应xcode配置PRODUCT_NAME,当多个target的PRODUCT_NAME相同时,需要手动修改,防止打包报错
|
33
|
+
attr_accessor :product_basename
|
34
|
+
# 当手动修改PRODUCT_NAME之后,@import需要修复为原使用方式
|
35
|
+
attr_accessor :repair_modulemap_path
|
36
|
+
# 当手动修改PRODUCT_NAME之后,#import<xx/xxx.h>需要修复为原使用方式,使用hmap进行映射
|
37
|
+
attr_accessor :need_repair_module_import
|
23
38
|
|
24
39
|
def initialize(native_pod_target)
|
25
40
|
@native_pod_target = native_pod_target
|
26
41
|
@name = native_pod_target.name
|
27
42
|
@root_name = native_pod_target.root_spec.name
|
28
|
-
@product_name = native_pod_target.product_name
|
29
43
|
@version = native_pod_target.version
|
30
44
|
@dependent_target_info = {}
|
31
45
|
@repair_dependent_target_info = {}
|
@@ -33,9 +47,15 @@ module KZ
|
|
33
47
|
@is_dev_pod = false
|
34
48
|
@config_pod_mode = :kz_pod_origin_mode
|
35
49
|
|
50
|
+
@product_name = native_pod_target.origin_product_name
|
51
|
+
@product_basename = native_pod_target.origin_product_basename
|
52
|
+
@need_repair_module_import = false
|
53
|
+
|
36
54
|
native_pod_target.file_accessors.each do |file_accessor|
|
37
55
|
file_accessor.kz_pod_target = self
|
38
56
|
end
|
57
|
+
|
58
|
+
native_pod_target.weakRef_kz_pod_target = WeakRef.new(self)
|
39
59
|
end
|
40
60
|
|
41
61
|
def uses_swift
|
@@ -49,7 +69,7 @@ module KZ
|
|
49
69
|
native_pod_target.file_accessors.each do |file_accessor|
|
50
70
|
next if file_accessor.spec.test_specification
|
51
71
|
|
52
|
-
all_headers.concat(file_accessor.
|
72
|
+
all_headers.concat(file_accessor.kz_headers)
|
53
73
|
end
|
54
74
|
|
55
75
|
@_all_headers = all_headers
|
@@ -63,13 +83,14 @@ module KZ
|
|
63
83
|
native_pod_target.file_accessors.each do |file_accessor|
|
64
84
|
next if file_accessor.spec.test_specification
|
65
85
|
|
66
|
-
public_headers.concat(file_accessor.
|
86
|
+
public_headers.concat(file_accessor.kz_public_headers)
|
67
87
|
end
|
68
88
|
|
69
89
|
@_public_headers = public_headers
|
70
90
|
@_public_headers
|
71
91
|
end
|
72
92
|
|
93
|
+
# 重些config_pod_mode的set方法,kz_pod_framework_mode优先级最高
|
73
94
|
def config_pod_mode=(value)
|
74
95
|
return if value == :kz_pod_origin_mode
|
75
96
|
|
@@ -82,12 +103,14 @@ module KZ
|
|
82
103
|
end
|
83
104
|
end
|
84
105
|
|
106
|
+
# 重些config_pod_mode的get方法,force_config_pod_mode优先级最高
|
85
107
|
def config_pod_mode
|
86
108
|
return @force_config_pod_mode if @force_config_pod_mode != :kz_pod_origin_mode
|
87
109
|
|
88
110
|
@config_pod_mode
|
89
111
|
end
|
90
112
|
|
113
|
+
# 配合kz_pod对target进行配置
|
91
114
|
def add_kz_pod_config(pod_config)
|
92
115
|
return unless pod_config
|
93
116
|
|
@@ -96,6 +119,12 @@ module KZ
|
|
96
119
|
repair_dependency.each { |repair_dependent_pod_target_name|
|
97
120
|
kz_repair_pod_target = yield(repair_dependent_pod_target_name)
|
98
121
|
if kz_repair_pod_target
|
122
|
+
native_dependent_targets_by_config = self.native_pod_target.dependent_targets_by_config
|
123
|
+
native_dependent_targets_by_config.each do |_, dependent_targets|
|
124
|
+
dependent_targets << kz_repair_pod_target.native_pod_target
|
125
|
+
end
|
126
|
+
self.native_pod_target.dependent_targets_by_config = native_dependent_targets_by_config
|
127
|
+
|
99
128
|
@dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target
|
100
129
|
@repair_dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target
|
101
130
|
end
|
@@ -113,6 +142,7 @@ module KZ
|
|
113
142
|
end
|
114
143
|
end
|
115
144
|
|
145
|
+
# 在当前target的所有依赖中,过滤有有修补的target
|
116
146
|
def all_need_repair_import
|
117
147
|
all_need_repair_import = []
|
118
148
|
|
@@ -122,6 +152,7 @@ module KZ
|
|
122
152
|
all_need_repair_import.uniq
|
123
153
|
end
|
124
154
|
|
155
|
+
# 获取当前target所有依赖,包括手动补充的
|
125
156
|
def recursive_dependent_targets
|
126
157
|
recursive_dependent_targets = []
|
127
158
|
@dependent_target_info.values.each do |dependent_target|
|
@@ -134,11 +165,10 @@ module KZ
|
|
134
165
|
recursive_dependent_targets
|
135
166
|
end
|
136
167
|
|
168
|
+
# 直接用于配置HEADER_SEARCH_PATHS
|
137
169
|
def header_search_paths
|
138
170
|
header_search_paths = ''
|
139
|
-
|
140
|
-
header_search_paths = @private_header_search_path.to_s
|
141
|
-
end
|
171
|
+
header_search_paths = KZ.deal_path_for_xcconfig(@private_header_search_path, true) if @private_header_search_path
|
142
172
|
repair_header_search_paths = self.all_repair_header_search_paths.join(' ')
|
143
173
|
if repair_header_search_paths.length > 0
|
144
174
|
header_search_paths += (' ' + repair_header_search_paths)
|
@@ -146,33 +176,38 @@ module KZ
|
|
146
176
|
header_search_paths
|
147
177
|
end
|
148
178
|
|
149
|
-
|
150
|
-
all_repair_dependent_target_info = @repair_dependent_target_info
|
151
|
-
@dependent_target_info.values.each do |dependent_target|
|
152
|
-
all_repair_dependent_target_info.merge!(dependent_target.all_repair_dependent_target_info)
|
153
|
-
end
|
154
|
-
all_repair_dependent_target_info
|
155
|
-
end
|
156
|
-
|
179
|
+
# 获取当前target所有需要修补target的hmap
|
157
180
|
def all_repair_header_search_paths
|
158
181
|
all_repair_header_search_paths = []
|
159
|
-
|
160
|
-
all_repair_header_search_paths << @repair_header_search_path.to_s
|
161
|
-
end
|
182
|
+
all_repair_header_search_paths << KZ.deal_path_for_xcconfig(@repair_header_search_path, true) if @repair_header_search_path
|
162
183
|
self.all_need_repair_import.each do |need_repair_target|
|
163
184
|
sub_repair_header_search_path = need_repair_target.repair_header_search_path
|
164
|
-
all_repair_header_search_paths << sub_repair_header_search_path if sub_repair_header_search_path
|
185
|
+
all_repair_header_search_paths << KZ.deal_path_for_xcconfig(sub_repair_header_search_path, true) if sub_repair_header_search_path
|
165
186
|
end
|
166
187
|
all_repair_header_search_paths.uniq
|
167
188
|
end
|
168
189
|
|
190
|
+
# 参考@repair_dependent_target_info,获取所有当前target直接或间接配置的依赖target
|
191
|
+
# 用于配置FRAMEWORK_SEARCH_PATHS内容
|
192
|
+
def all_repair_dependent_target_info
|
193
|
+
all_repair_dependent_target_info = @repair_dependent_target_info
|
194
|
+
@dependent_target_info.values.each do |dependent_target|
|
195
|
+
all_repair_dependent_target_info.merge!(dependent_target.all_repair_dependent_target_info)
|
196
|
+
end
|
197
|
+
all_repair_dependent_target_info
|
198
|
+
end
|
199
|
+
|
200
|
+
# 获取target对应的配置根目录,部分文件需要依赖版本进行存储
|
169
201
|
def pod_config_cache_path(concat_version)
|
170
202
|
kz_target_framework_folder = KZ_POD_CONFIG_ROOT + @name
|
171
203
|
kz_target_framework_folder += @version if concat_version
|
172
204
|
FileUtils.mkdir_p(kz_target_framework_folder) unless File.exist?(kz_target_framework_folder) || concat_version
|
173
|
-
|
205
|
+
kz_target_framework_folder
|
174
206
|
end
|
175
207
|
|
208
|
+
# 获取target中的module name,默认为product_module_name与target.name也相同。
|
209
|
+
# 部分target导入的framework名字与modulemap中的名字不对应,需要特殊处理
|
210
|
+
# eg.AMapSearch,product_module_name为AMapSearch,modulemap中的名字为AMapSearchKit
|
176
211
|
def kz_module_name
|
177
212
|
return @native_pod_target.product_module_name unless all_headers.count > 0
|
178
213
|
|
@@ -187,5 +222,24 @@ module KZ
|
|
187
222
|
return @native_pod_target.product_module_name
|
188
223
|
end
|
189
224
|
|
225
|
+
# 获取所有用于修复的modulemap路径,原因参考@repair_modulemap_path
|
226
|
+
def all_repair_modulemap_paths
|
227
|
+
all_repair_modulemap_paths = []
|
228
|
+
all_repair_modulemap_paths << repair_modulemap_path if self.repair_modulemap_path
|
229
|
+
recursive_dependent_targets.each do |recursive_dependent_target|
|
230
|
+
all_repair_modulemap_paths.concat(recursive_dependent_target.all_repair_modulemap_paths)
|
231
|
+
end
|
232
|
+
all_repair_modulemap_paths.uniq! if all_repair_modulemap_paths.count > 0
|
233
|
+
all_repair_modulemap_paths
|
234
|
+
end
|
235
|
+
|
236
|
+
def prefix_header_path
|
237
|
+
@native_pod_target.prefix_header_path
|
238
|
+
end
|
239
|
+
|
240
|
+
def should_build?
|
241
|
+
@native_pod_target.should_build?
|
242
|
+
end
|
243
|
+
|
190
244
|
end
|
191
245
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'kz_global_helper'
|
2
2
|
|
3
3
|
module KZ
|
4
4
|
class KZSwiftContext
|
@@ -336,7 +336,7 @@ module KZ
|
|
336
336
|
kz_pod_target.native_pod_target.file_accessors.each do |file_accessor|
|
337
337
|
next if file_accessor.spec.test_specification
|
338
338
|
|
339
|
-
file_accessor.
|
339
|
+
file_accessor.origin_source_files.each do |source_file|
|
340
340
|
if source_file.extname == ".swift"
|
341
341
|
need_repair_files << source_file
|
342
342
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'kz_global_helper'
|
2
2
|
|
3
3
|
module KZ
|
4
4
|
class KZRepairModuleImport
|
@@ -9,7 +9,7 @@ module KZ
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def repair
|
12
|
-
if @specify_pod_names.count == 0
|
12
|
+
if @specify_pod_names.count == 0 || @specify_pod_names.include?("Main")
|
13
13
|
main_project_file_folder = @main_project.project_dir + @main_project.root_object.display_name
|
14
14
|
main_project_files = []
|
15
15
|
main_project_headers = []
|
@@ -27,35 +27,26 @@ module KZ
|
|
27
27
|
main_project_files.each do |file_path|
|
28
28
|
repair_file(file_path, main_project_headers)
|
29
29
|
end
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
puts "Start reair '#{kz_pod_target.name}' header files..."
|
35
|
-
kz_pod_target.all_headers.each do |header_path|
|
36
|
-
repair_file(header_path, kz_pod_target.all_headers, kz_pod_target.recursive_dependent_targets)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
else
|
40
|
-
@all_kz_pod_targets.values.each do |kz_pod_target|
|
41
|
-
next unless kz_pod_target.is_dev_pod
|
42
|
-
next unless @specify_pod_names.include?(kz_pod_target.name)
|
32
|
+
@all_kz_pod_targets.values.each do |kz_pod_target|
|
33
|
+
next unless kz_pod_target.is_dev_pod
|
34
|
+
next unless @specify_pod_names.count > 0 && @specify_pod_names.include?(kz_pod_target.name)
|
43
35
|
|
44
|
-
|
45
|
-
|
46
|
-
|
36
|
+
need_repair_files = []
|
37
|
+
kz_pod_target.native_pod_target.file_accessors.each do |file_accessor|
|
38
|
+
next if file_accessor.spec.test_specification
|
47
39
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
40
|
+
file_accessor.source_files.each do |source_file|
|
41
|
+
if %w[.h .m .mm].include?(source_file.extname)
|
42
|
+
need_repair_files << source_file
|
52
43
|
end
|
53
44
|
end
|
45
|
+
end
|
54
46
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
47
|
+
puts "Start reair '#{kz_pod_target.name}' files..."
|
48
|
+
need_repair_files.each do |file_path|
|
49
|
+
repair_file(file_path, kz_pod_target.all_headers, kz_pod_target.recursive_dependent_targets)
|
59
50
|
end
|
60
51
|
end
|
61
52
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require 'cocoapods-kz/helpers/
|
1
|
+
require 'cocoapods-kz/helpers/kz_global_helper'
|
2
|
+
require 'cocoapods-kz/helpers/kz_generator'
|
2
3
|
|
3
4
|
module Pod
|
4
5
|
class Installer
|
@@ -8,9 +9,11 @@ module Pod
|
|
8
9
|
def generate_targets(resolver_specs_by_target, target_inspections)
|
9
10
|
aggregate_targets, pod_targets = original_generate_targets(resolver_specs_by_target, target_inspections)
|
10
11
|
if KZ::KZGlobalHelper.instance.generate_kz_pod_targets
|
12
|
+
main_project = aggregate_targets.first.user_project
|
11
13
|
kz_analyer = KZ::KZAnalyzer.new(pod_targets, self.sandbox.development_pods)
|
12
14
|
kz_analyer.analyer
|
13
15
|
KZ::KZGlobalHelper.instance.kz_analyzer = kz_analyer
|
16
|
+
KZ::KZGlobalHelper.instance.kz_generator = KZ::KZGenerator.new(main_project)
|
14
17
|
end
|
15
18
|
[aggregate_targets, pod_targets]
|
16
19
|
end
|
@@ -82,6 +82,23 @@ module Pod
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
def kz_headers
|
86
|
+
extensions = HEADER_EXTENSIONS
|
87
|
+
origin_source_files.select { |f| extensions.include?(f.extname) }
|
88
|
+
end
|
89
|
+
|
90
|
+
def kz_public_headers
|
91
|
+
public_headers = public_header_files
|
92
|
+
project_headers = project_header_files
|
93
|
+
private_headers = private_header_files
|
94
|
+
if public_headers.nil? || public_headers.empty?
|
95
|
+
header_files = kz_headers
|
96
|
+
else
|
97
|
+
header_files = public_headers
|
98
|
+
end
|
99
|
+
header_files - project_headers - private_headers
|
100
|
+
end
|
101
|
+
|
85
102
|
end
|
86
103
|
end
|
87
104
|
end
|
@@ -1,37 +1,22 @@
|
|
1
1
|
require 'cocoapods/installer'
|
2
|
-
require 'cocoapods-kz/helpers/xml_build_config'
|
3
|
-
require 'cocoapods-kz/helpers/strip_framework_config'
|
4
|
-
require 'cocoapods-kz/helpers/build_framework_config'
|
5
|
-
require 'cocoapods-kz/helpers/create_hamp'
|
6
2
|
|
7
3
|
module Pod
|
8
4
|
class Installer
|
9
5
|
alias_method :original_integrate_user_project, :integrate_user_project
|
10
6
|
def integrate_user_project
|
11
7
|
original_integrate_user_project
|
12
|
-
|
13
8
|
if KZ::KZGlobalHelper.instance.kz_pod_enable
|
14
|
-
main_project = self.aggregate_targets.first.user_project
|
15
|
-
pods_project = self.pods_project
|
16
|
-
|
17
|
-
puts 'Start KZPlugin Config'
|
18
|
-
if KZ::KZGlobalHelper.instance.have_flexLib_pod_target
|
19
|
-
KZ::XmlBuildConfig.new(main_project, pods_project).config_project
|
20
|
-
end
|
21
|
-
|
22
|
-
KZ::StripFrameworkConfig.new(main_project, pods_project).config_project
|
23
|
-
|
24
|
-
unless KZ::KZGlobalHelper.instance.disable_generate_framework
|
25
|
-
KZ::BuildFrameworkConfig.new(main_project, pods_project).config_project
|
26
|
-
end
|
27
|
-
|
28
|
-
KZ::CreateHmap.new(main_project, pods_project).config_project
|
29
|
-
|
30
|
-
main_project.save
|
31
|
-
pods_project.save
|
32
|
-
|
33
9
|
KZ::KZGlobalHelper.instance.write_lock_file
|
34
10
|
end
|
35
11
|
end
|
12
|
+
|
13
|
+
alias_method :original_integrate, :integrate
|
14
|
+
def integrate
|
15
|
+
if KZ::KZGlobalHelper.instance.kz_pod_enable
|
16
|
+
# hmap的创建需要在download之后,integrate之前
|
17
|
+
KZ::KZGlobalHelper.instance.kz_generator.create_hamp
|
18
|
+
end
|
19
|
+
original_integrate
|
20
|
+
end
|
36
21
|
end
|
37
22
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class PodTarget < Target
|
4
|
+
|
5
|
+
def dependent_targets_by_config=(dependent_targets_by_config)
|
6
|
+
@dependent_targets_by_config = dependent_targets_by_config
|
7
|
+
@dependent_targets = dependent_targets_by_config.each_value.reduce([], &:|)
|
8
|
+
|
9
|
+
# 让@recursive_dependent_targets重新赋值
|
10
|
+
if defined?(@recursive_dependent_targets)
|
11
|
+
@recursive_dependent_targets = nil
|
12
|
+
remove_instance_variable(:@recursive_dependent_targets)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class Installer
|
4
|
+
class Xcode
|
5
|
+
class PodsProjectGenerator
|
6
|
+
|
7
|
+
class PodTargetInstaller < TargetInstaller
|
8
|
+
require 'cocoapods/installer/xcode/pods_project_generator/app_host_installer'
|
9
|
+
|
10
|
+
alias_method :origin_install!, :install!
|
11
|
+
def install!
|
12
|
+
target_installation_result = origin_install!
|
13
|
+
if KZ::KZGlobalHelper.instance.kz_pod_enable && self.target.should_build?
|
14
|
+
unless self.target.name.start_with?('Pods-')
|
15
|
+
KZ::KZGlobalHelper.instance.kz_generator.add_framework_generator_build_phase(target_installation_result.native_target)
|
16
|
+
end
|
17
|
+
|
18
|
+
kz_pod_target = self.target.weakRef_kz_pod_target
|
19
|
+
if kz_pod_target&.is_dev_pod
|
20
|
+
KZ::KZGlobalHelper.instance.kz_generator.add_flexlib_xml_build_rules(self.project, target_installation_result.native_target)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
target_installation_result
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class Target
|
4
|
+
attr_accessor :weakRef_kz_pod_target
|
5
|
+
|
6
|
+
alias_method :origin_product_basename, :product_basename
|
7
|
+
def product_basename
|
8
|
+
if self.weakRef_kz_pod_target
|
9
|
+
self.weakRef_kz_pod_target.product_basename
|
10
|
+
else
|
11
|
+
origin_product_basename
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def framework_name
|
17
|
+
if self.weakRef_kz_pod_target
|
18
|
+
self.weakRef_kz_pod_target.product_name
|
19
|
+
else
|
20
|
+
"#{product_module_name}.framework"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
alias_method :origin_product_name, :product_name
|
25
|
+
def product_name
|
26
|
+
if self.weakRef_kz_pod_target
|
27
|
+
self.weakRef_kz_pod_target.product_name
|
28
|
+
else
|
29
|
+
origin_product_name
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'cocoapods-kz/helpers/kz_global_helper'
|
2
|
+
require 'cocoapods-kz/helpers/kz_pod_target'
|
3
|
+
|
4
|
+
module Pod
|
5
|
+
class Installer
|
6
|
+
class Xcode
|
7
|
+
class PodsProjectGenerator
|
8
|
+
module TargetInstallerHelper
|
9
|
+
|
10
|
+
alias_method :origin_update_changed_file, :update_changed_file
|
11
|
+
def update_changed_file(generator, path)
|
12
|
+
unless KZ::KZGlobalHelper.instance.kz_pod_enable
|
13
|
+
origin_update_changed_file(generator, path)
|
14
|
+
return
|
15
|
+
end
|
16
|
+
|
17
|
+
if generator.is_a?(Pod::Target::BuildSettings::AggregateTargetSettings)
|
18
|
+
xcconfig = generator.xcconfig
|
19
|
+
kz_clean_xcconfig(xcconfig)
|
20
|
+
main_hamp_search_path = '"' + KZ::KZ_POD_CONFIG_ROOT_STR + "/#{self.target.user_project.root_object.display_name}.hmap" + '"'
|
21
|
+
self.target.pod_targets.each do |native_pod_target|
|
22
|
+
kz_pod_target = native_pod_target.weakRef_kz_pod_target
|
23
|
+
if kz_pod_target
|
24
|
+
if kz_pod_target.repair_header_search_path
|
25
|
+
main_hamp_search_path += (' ' + KZ.deal_path_for_xcconfig(kz_pod_target.repair_header_search_path, true))
|
26
|
+
end
|
27
|
+
add_repair_modulemap(xcconfig, kz_pod_target.all_repair_modulemap_paths)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
xcconfig.attributes['HEADER_SEARCH_PATHS'] = main_hamp_search_path
|
31
|
+
xcconfig.attributes['USE_HEADERMAP'] = 'NO'
|
32
|
+
|
33
|
+
kz_update_xcconfig_file(xcconfig, path)
|
34
|
+
elsif generator.is_a?(Pod::Target::BuildSettings::PodTargetSettings)
|
35
|
+
kz_pod_target = self.target.weakRef_kz_pod_target
|
36
|
+
if kz_pod_target
|
37
|
+
xcconfig = generator.xcconfig
|
38
|
+
xcconfig.attributes['HEADER_SEARCH_PATHS'] = kz_pod_target.header_search_paths
|
39
|
+
xcconfig.attributes['USE_HEADERMAP'] = 'NO'
|
40
|
+
framework_cache_path = KZ.deal_path_for_xcconfig(kz_pod_target.pod_config_cache_path(true))
|
41
|
+
xcconfig.attributes['KZ_FRAMEWORK_CACHE_PATH'] = framework_cache_path
|
42
|
+
|
43
|
+
add_repair_modulemap(xcconfig, kz_pod_target.all_repair_modulemap_paths)
|
44
|
+
kz_update_xcconfig_file(xcconfig, path)
|
45
|
+
else
|
46
|
+
origin_update_changed_file(generator, path)
|
47
|
+
end
|
48
|
+
else
|
49
|
+
origin_update_changed_file(generator, path)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_repair_modulemap(xcconfig, repair_modulemap_paths)
|
54
|
+
if repair_modulemap_paths.count > 0
|
55
|
+
repair_modulemap_paths.each do |repair_modulemap_path|
|
56
|
+
fmodule_map = ' -fmodule-map-file=' + KZ.deal_path_for_xcconfig(repair_modulemap_path, true)
|
57
|
+
unless xcconfig.attributes['OTHER_CFLAGS'].include?(fmodule_map)
|
58
|
+
xcconfig.attributes['OTHER_CFLAGS'] += fmodule_map
|
59
|
+
end
|
60
|
+
xfmodule_map = ' -Xcc -fmodule-map-file=' + KZ.deal_path_for_xcconfig(repair_modulemap_path, true)
|
61
|
+
unless xcconfig.attributes['OTHER_SWIFT_FLAGS'].include?(xfmodule_map)
|
62
|
+
xcconfig.attributes['OTHER_SWIFT_FLAGS'] += xfmodule_map
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
def kz_update_xcconfig_file(xcconfig, path)
|
70
|
+
if path.exist?
|
71
|
+
contents = xcconfig.to_s
|
72
|
+
content_stream = StringIO.new(contents)
|
73
|
+
identical = File.open(path, 'rb') { |f| FileUtils.compare_stream(f, content_stream) }
|
74
|
+
return if identical
|
75
|
+
|
76
|
+
File.open(path, 'w') { |f| f.write(contents) }
|
77
|
+
else
|
78
|
+
path.dirname.mkpath
|
79
|
+
xcconfig.save_as(path)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def kz_clean_xcconfig(xcconfig)
|
84
|
+
other_cflags = xcconfig.attributes['OTHER_CFLAGS']
|
85
|
+
flags = other_cflags.split(' ')
|
86
|
+
new_flags = []
|
87
|
+
appear_delete_tag = false
|
88
|
+
flags.each do |flag|
|
89
|
+
if flag.include?('isystem') || flag.include?('iframework')
|
90
|
+
appear_delete_tag = true
|
91
|
+
else
|
92
|
+
unless appear_delete_tag || new_flags.include?(flag)
|
93
|
+
new_flags << flag
|
94
|
+
end
|
95
|
+
appear_delete_tag = false
|
96
|
+
end
|
97
|
+
end
|
98
|
+
xcconfig.attributes['OTHER_CFLAGS'] = new_flags.join(' ')
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/lib/cocoapods-kz/native.rb
CHANGED
@@ -7,5 +7,8 @@ if Pod.match_version?('~> 1.4')
|
|
7
7
|
require 'cocoapods-kz/native/acknowledgements'
|
8
8
|
require 'cocoapods-kz/native/analyzer'
|
9
9
|
require 'cocoapods-kz/native/file_accessor'
|
10
|
-
require 'cocoapods-kz/native/
|
10
|
+
require 'cocoapods-kz/native/target'
|
11
|
+
require 'cocoapods-kz/native/target_installer_helper'
|
12
|
+
require 'cocoapods-kz/native/pod_target'
|
13
|
+
require 'cocoapods-kz/native/pod_target_installer'
|
11
14
|
end
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yixiong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,24 +52,24 @@ files:
|
|
52
52
|
- lib/cocoapods-kz/command/repair.rb
|
53
53
|
- lib/cocoapods-kz/command/update.rb
|
54
54
|
- lib/cocoapods-kz/gem_version.rb
|
55
|
-
- lib/cocoapods-kz/helpers/build_framework_config.rb
|
56
|
-
- lib/cocoapods-kz/helpers/create_hamp.rb
|
57
|
-
- lib/cocoapods-kz/helpers/global_helper.rb
|
58
55
|
- lib/cocoapods-kz/helpers/kz_analyzer.rb
|
59
56
|
- lib/cocoapods-kz/helpers/kz_config_result.rb
|
60
57
|
- lib/cocoapods-kz/helpers/kz_framework_manager.rb
|
58
|
+
- lib/cocoapods-kz/helpers/kz_generator.rb
|
59
|
+
- lib/cocoapods-kz/helpers/kz_global_helper.rb
|
61
60
|
- lib/cocoapods-kz/helpers/kz_pod_target.rb
|
62
61
|
- lib/cocoapods-kz/helpers/repair_dynamic_swift.rb
|
63
62
|
- lib/cocoapods-kz/helpers/repair_module_import.rb
|
64
|
-
- lib/cocoapods-kz/helpers/strip_framework_config.rb
|
65
|
-
- lib/cocoapods-kz/helpers/xml_build_config.rb
|
66
63
|
- lib/cocoapods-kz/native.rb
|
67
64
|
- lib/cocoapods-kz/native/acknowledgements.rb
|
68
65
|
- lib/cocoapods-kz/native/analyzer.rb
|
69
66
|
- lib/cocoapods-kz/native/dls.rb
|
70
67
|
- lib/cocoapods-kz/native/file_accessor.rb
|
71
68
|
- lib/cocoapods-kz/native/installer.rb
|
72
|
-
- lib/cocoapods-kz/native/
|
69
|
+
- lib/cocoapods-kz/native/pod_target.rb
|
70
|
+
- lib/cocoapods-kz/native/pod_target_installer.rb
|
71
|
+
- lib/cocoapods-kz/native/target.rb
|
72
|
+
- lib/cocoapods-kz/native/target_installer_helper.rb
|
73
73
|
- lib/cocoapods-kz/resources/FlexCompiler
|
74
74
|
- lib/cocoapods-kz/resources/hmap
|
75
75
|
- lib/cocoapods_plugin.rb
|