Class: KZ::KZPodTarget
- Inherits:
-
Object
- Object
- KZ::KZPodTarget
- Defined in:
- lib/cocoapods-kz/helpers/kz_pod_target.rb
Instance Attribute Summary collapse
-
#config_pod_mode ⇒ Object
重些config_pod_mode的get方法,force_config_pod_mode优先级最高.
-
#dependent_target_info ⇒ Object
当前target所有直接或间接依赖的target信息,是一个hash,key为target名字,value为KZPodTarget对象.
-
#force_config_pod_mode ⇒ Object
pod kz install/update 中指定的pod模式,优先级最大.
-
#is_dev_pod ⇒ Object
Returns the value of attribute is_dev_pod.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#native_pod_target ⇒ Object
readonly
Returns the value of attribute native_pod_target.
-
#need_repair_module_import ⇒ Object
当手动修改PRODUCT_NAME之后,#import<xx/xxx.h>需要修复为原使用方式,使用hmap进行映射.
-
#private_header_search_path ⇒ Object
用于临时保存hamp过程的配置.
-
#product_basename ⇒ Object
对应xcode配置PRODUCT_NAME,当多个target的PRODUCT_NAME相同时,需要手动修改,防止打包报错.
-
#product_name ⇒ Object
target编译最终的产物名称.
-
#repair_dependent_target_info ⇒ Object
所有通过kz_pod,:dependency手动配置的依赖target.
-
#repair_header_search_path ⇒ Object
Returns the value of attribute repair_header_search_path.
-
#repair_import ⇒ Object
readonly
Returns the value of attribute repair_import.
-
#repair_modulemap_path ⇒ Object
当手动修改PRODUCT_NAME之后,@import需要修复为原使用方式.
-
#root_name ⇒ Object
readonly
部分pod配置了subspec,此时获取的name为cocoapods处理之后的名字,可以通过root_name拿到pod本名.
-
#use_local_private_headers_path ⇒ Object
Returns the value of attribute use_local_private_headers_path.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
-
#add_kz_pod_config(pod_config) ⇒ Object
配合kz_pod对target进行配置.
- #all_headers ⇒ Object
-
#all_need_repair_import ⇒ Object
在当前target的所有依赖中,过滤有有修补的target.
-
#all_repair_dependent_target_info ⇒ Object
参考@repair_dependent_target_info,获取所有当前target直接或间接配置的依赖target 用于配置FRAMEWORK_SEARCH_PATHS内容.
-
#all_repair_header_search_paths ⇒ Object
获取当前target所有需要修补target的hmap.
-
#all_repair_modulemap_paths ⇒ Object
获取所有用于修复的modulemap路径,原因参考@repair_modulemap_path.
- #have_download_pod? ⇒ Boolean
-
#header_search_paths ⇒ Object
直接用于配置HEADER_SEARCH_PATHS.
-
#initialize(native_pod_target) ⇒ KZPodTarget
constructor
A new instance of KZPodTarget.
-
#kz_module_name ⇒ Object
获取target中的module name,默认为product_module_name与target.name也相同。 部分target导入的framework名字与modulemap中的名字不对应,需要特殊处理 eg.AMapSearch,product_module_name为AMapSearch,modulemap中的名字为AMapSearchKit.
- #local_private_headers_path ⇒ Object
-
#pod_config_cache_path(concat_version) ⇒ Object
获取target对应的配置根目录,部分文件需要依赖版本进行存储.
- #prefix_header_path ⇒ Object
- #public_headers ⇒ Object
-
#recursive_dependent_targets ⇒ Object
获取当前target所有依赖,包括手动补充的.
- #should_build? ⇒ Boolean
- #uses_swift ⇒ Object
- #uses_swift? ⇒ Boolean
Constructor Details
#initialize(native_pod_target) ⇒ KZPodTarget
Returns a new instance of KZPodTarget.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 41 def initialize(native_pod_target) @native_pod_target = native_pod_target @name = native_pod_target.name @root_name = native_pod_target.root_spec.name @version = native_pod_target.version @dependent_target_info = {} @repair_dependent_target_info = {} @repair_import = [] @is_dev_pod = false @config_pod_mode = :kz_pod_origin_mode @product_name = native_pod_target.origin_product_name @product_basename = native_pod_target.origin_product_basename @need_repair_module_import = false @use_local_private_headers_path = false native_pod_target.file_accessors.each do |file_accessor| file_accessor.kz_pod_target = self end native_pod_target.weakRef_kz_pod_target = WeakRef.new(self) end |
Instance Attribute Details
#config_pod_mode ⇒ Object
重些config_pod_mode的get方法,force_config_pod_mode优先级最高
22 23 24 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 22 def config_pod_mode @config_pod_mode end |
#dependent_target_info ⇒ Object
当前target所有直接或间接依赖的target信息,是一个hash,key为target名字,value为KZPodTarget对象
16 17 18 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 16 def dependent_target_info @dependent_target_info end |
#force_config_pod_mode ⇒ Object
pod kz install/update 中指定的pod模式,优先级最大
24 25 26 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 24 def force_config_pod_mode @force_config_pod_mode end |
#is_dev_pod ⇒ Object
Returns the value of attribute is_dev_pod.
20 21 22 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 20 def is_dev_pod @is_dev_pod end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
11 12 13 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 11 def name @name end |
#native_pod_target ⇒ Object (readonly)
Returns the value of attribute native_pod_target.
10 11 12 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 10 def native_pod_target @native_pod_target end |
#need_repair_module_import ⇒ Object
当手动修改PRODUCT_NAME之后,#import<xx/xxx.h>需要修复为原使用方式,使用hmap进行映射
37 38 39 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 37 def need_repair_module_import @need_repair_module_import end |
#private_header_search_path ⇒ Object
用于临时保存hamp过程的配置
27 28 29 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 27 def private_header_search_path @private_header_search_path end |
#product_basename ⇒ Object
对应xcode配置PRODUCT_NAME,当多个target的PRODUCT_NAME相同时,需要手动修改,防止打包报错
33 34 35 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 33 def product_basename @product_basename end |
#product_name ⇒ Object
target编译最终的产物名称
31 32 33 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 31 def product_name @product_name end |
#repair_dependent_target_info ⇒ Object
所有通过kz_pod,:dependency手动配置的依赖target
18 19 20 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 18 def repair_dependent_target_info @repair_dependent_target_info end |
#repair_header_search_path ⇒ Object
Returns the value of attribute repair_header_search_path.
28 29 30 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 28 def repair_header_search_path @repair_header_search_path end |
#repair_import ⇒ Object (readonly)
Returns the value of attribute repair_import.
19 20 21 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 19 def repair_import @repair_import end |
#repair_modulemap_path ⇒ Object
当手动修改PRODUCT_NAME之后,@import需要修复为原使用方式
35 36 37 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 35 def repair_modulemap_path @repair_modulemap_path end |
#root_name ⇒ Object (readonly)
部分pod配置了subspec,此时获取的name为cocoapods处理之后的名字,可以通过root_name拿到pod本名
13 14 15 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 13 def root_name @root_name end |
#use_local_private_headers_path ⇒ Object
Returns the value of attribute use_local_private_headers_path.
39 40 41 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 39 def use_local_private_headers_path @use_local_private_headers_path end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
14 15 16 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 14 def version @version end |
Instance Method Details
#add_kz_pod_config(pod_config) ⇒ Object
配合kz_pod对target进行配置
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 116 def add_kz_pod_config(pod_config) return unless pod_config repair_dependency = pod_config[:dependency] if repair_dependency repair_dependency.each { |repair_dependent_pod_target_name| kz_repair_pod_target = yield(repair_dependent_pod_target_name) if kz_repair_pod_target native_dependent_targets_by_config = self.native_pod_target.dependent_targets_by_config native_dependent_targets_by_config.each do |_, dependent_targets| dependent_targets << kz_repair_pod_target.native_pod_target end self.native_pod_target.dependent_targets_by_config = native_dependent_targets_by_config @dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target @repair_dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target end } end repair_import = pod_config[:repair_import] if repair_import.is_a?(TrueClass) @repair_import = self.recursive_dependent_targets elsif repair_import.is_a?(Array) repair_import.each do |repair_import_target_name| kz_repair_pod_target = yield(repair_import_target_name) @repair_import << kz_repair_pod_target end end end |
#all_headers ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 68 def all_headers return [] unless have_download_pod? @all_headers ||= begin all_headers = [] native_pod_target.file_accessors.each do |file_accessor| next if file_accessor.spec.test_specification all_headers.concat(file_accessor.kz_headers) end all_headers end end |
#all_need_repair_import ⇒ Object
在当前target的所有依赖中,过滤有有修补的target
148 149 150 151 152 153 154 155 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 148 def all_need_repair_import all_need_repair_import = [] self.recursive_dependent_targets.each do |dependent_target| all_need_repair_import << dependent_target if dependent_target.repair_import.count > 0 end all_need_repair_import.uniq end |
#all_repair_dependent_target_info ⇒ Object
参考@repair_dependent_target_info,获取所有当前target直接或间接配置的依赖target 用于配置FRAMEWORK_SEARCH_PATHS内容
197 198 199 200 201 202 203 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 197 def all_repair_dependent_target_info all_repair_dependent_target_info = @repair_dependent_target_info @dependent_target_info.values.each do |dependent_target| all_repair_dependent_target_info.merge!(dependent_target.all_repair_dependent_target_info) end all_repair_dependent_target_info end |
#all_repair_header_search_paths ⇒ Object
获取当前target所有需要修补target的hmap
185 186 187 188 189 190 191 192 193 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 185 def all_repair_header_search_paths all_repair_header_search_paths = [] all_repair_header_search_paths << KZ.deal_path_for_xcconfig(@repair_header_search_path, true) if @repair_header_search_path self.all_need_repair_import.each do |need_repair_target| sub_repair_header_search_path = need_repair_target.repair_header_search_path all_repair_header_search_paths << KZ.deal_path_for_xcconfig(sub_repair_header_search_path, true) if sub_repair_header_search_path end all_repair_header_search_paths.uniq end |
#all_repair_modulemap_paths ⇒ Object
获取所有用于修复的modulemap路径,原因参考@repair_modulemap_path
231 232 233 234 235 236 237 238 239 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 231 def all_repair_modulemap_paths all_repair_modulemap_paths = [] all_repair_modulemap_paths << repair_modulemap_path if self.repair_modulemap_path recursive_dependent_targets.each do |recursive_dependent_target| all_repair_modulemap_paths.concat(recursive_dependent_target.all_repair_modulemap_paths) end all_repair_modulemap_paths.uniq! if all_repair_modulemap_paths.count > 0 all_repair_modulemap_paths end |
#have_download_pod? ⇒ Boolean
245 246 247 248 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 245 def have_download_pod? native_pod_dir = @native_pod_target.sandbox.pod_dir(@root_name) File.exist?(native_pod_dir) && !File.empty?(native_pod_dir) end |
#header_search_paths ⇒ Object
直接用于配置HEADER_SEARCH_PATHS
171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 171 def header_search_paths header_search_paths = '' header_search_paths = KZ.deal_path_for_xcconfig(@private_header_search_path, true) if @private_header_search_path repair_header_search_paths = self.all_repair_header_search_paths.join(' ') if repair_header_search_paths.length > 0 header_search_paths += (' ' + repair_header_search_paths) end if @use_local_private_headers_path header_search_paths += (' ' + KZ.deal_path_for_xcconfig(local_private_headers_path, true)) end header_search_paths end |
#kz_module_name ⇒ Object
获取target中的module name,默认为product_module_name与target.name也相同。部分target导入的framework名字与modulemap中的名字不对应,需要特殊处理eg.AMapSearch,product_module_name为AMapSearch,modulemap中的名字为AMapSearchKit
216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 216 def kz_module_name return @native_pod_target.product_module_name unless all_headers.count > 0 one_header_path = all_headers.first.to_s if one_header_path.include?('.framework') one_header_path.split('/').each do |name| if name.include?('.framework') return name.split('.').first end end end return @native_pod_target.product_module_name end |
#local_private_headers_path ⇒ Object
258 259 260 261 262 263 264 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 258 def local_private_headers_path @local_private_headers_path ||= begin path = KZ_POD_CONFIG_ROOT + @name + "Headers" FileUtils.mkdir_p(path) unless File.exist?(path) path end end |
#pod_config_cache_path(concat_version) ⇒ Object
获取target对应的配置根目录,部分文件需要依赖版本进行存储
206 207 208 209 210 211 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 206 def pod_config_cache_path(concat_version) kz_target_framework_folder = KZ_POD_CONFIG_ROOT + @name kz_target_framework_folder += @version if concat_version FileUtils.mkdir_p(kz_target_framework_folder) unless File.exist?(kz_target_framework_folder) || concat_version kz_target_framework_folder end |
#prefix_header_path ⇒ Object
241 242 243 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 241 def prefix_header_path @native_pod_target.prefix_header_path end |
#public_headers ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 81 def public_headers return [] unless have_download_pod? @public_headers ||= begin public_headers = [] native_pod_target.file_accessors.each do |file_accessor| next if file_accessor.spec.test_specification public_headers.concat(file_accessor.kz_public_headers) end public_headers end end |
#recursive_dependent_targets ⇒ Object
获取当前target所有依赖,包括手动补充的
158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 158 def recursive_dependent_targets recursive_dependent_targets = [] @dependent_target_info.values.each do |dependent_target| recursive_dependent_targets << dependent_target recursive_dependent_targets.concat(dependent_target.recursive_dependent_targets) end if recursive_dependent_targets.count > 0 recursive_dependent_targets.uniq end recursive_dependent_targets end |
#should_build? ⇒ Boolean
250 251 252 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 250 def should_build? have_download_pod? ? @native_pod_target.should_build? : false end |
#uses_swift ⇒ Object
64 65 66 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 64 def uses_swift native_pod_target.uses_swift? end |
#uses_swift? ⇒ Boolean
254 255 256 |
# File 'lib/cocoapods-kz/helpers/kz_pod_target.rb', line 254 def uses_swift? @native_pod_target.uses_swift? end |