如何配置CocoaPods使依赖使用对应Target的签名(适配Xcode14)
解决多Target不同签名下CocoaPods依赖自动匹配签名的问题
问题背景
项目包含多个使用不同实体签名的Target,在Xcode 14中,部分Pod依赖需要签名,手动为每个Target指定签名团队操作繁琐,且不想通过完全禁用签名的方式解决(如下代码虽能编译但不符合Apple要求):
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = "" config.build_settings['CODE_SIGNING_REQUIRED'] = "NO" config.build_settings['CODE_SIGNING_ALLOWED'] = "NO" end end end
解决方案
通过CocoaPods的post_install钩子,让每个Pod Target自动继承对应主Target的签名配置,无需手动指定。具体配置如下:
post_install do |installer| installer.pods_project.targets.each do |pod_target| pod_target.user_build_configurations.each do |config_name, config| # 找到当前Pod关联的主Target main_target = installer.target_installation_results.pod_target_installation_results[pod_target].targets.first next unless main_target # 匹配主Target对应的Build Configuration main_config = main_target.build_configurations.find { |c| c.name == config_name } next unless main_config # 同步签名相关配置 config.build_settings['DEVELOPMENT_TEAM'] = main_config.build_settings['DEVELOPMENT_TEAM'] config.build_settings['CODE_SIGN_IDENTITY'] = main_config.build_settings['CODE_SIGN_IDENTITY'] config.build_settings['CODE_SIGN_STYLE'] = main_config.build_settings['CODE_SIGN_STYLE'] || "Automatic" # 开启签名校验,符合Apple要求 config.build_settings['CODE_SIGNING_REQUIRED'] = "YES" config.build_settings['CODE_SIGNING_ALLOWED'] = "YES" end end end
说明
- 脚本会自动关联每个Pod Target对应的主Target,同步其
DEVELOPMENT_TEAM、CODE_SIGN_IDENTITY等签名核心配置。 - 保留主Target的签名模式(自动/手动),完全符合Apple的签名规范。
- 彻底省去手动为每个Pod Target指定签名团队的重复操作。
内容的提问来源于stack exchange,提问作者Peter Lapisu
相关产品推荐
相关产品推荐

