You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:25:33