第三方库使用 Framework,用 Jenkins 打包时报错

现在想必大多数公司都开始进行持续集成(CI)了。毕竟手工打包,重复劳动真的是太累。业内有很多持续集成的工具,我们公司用的是 Jenkins。然而使用过程中遇到了一个问题,花了我很长时间去解决,记录一下,也方便当别人遇到时,快速解决。

本来项目用的是静态库,即.a 文件,如下:

第三方库使用 Framework,用 Jenkins 打包时报错_第1张图片
静态库

但考虑到要和 Swift 混编,而 Swift 只能用 Framework,所以在Podfile文件加了use_frameworks!这样一行,改成了使用 Framework。然后测试妹子对我说,Jenkins 不能打包了,我看了下,报错信息大致如下:

No valid signing identities (i.e. certificate and private key pair) matching...

大致意思是:CocoaPods 要对每一个 Framework 进行证书签名,而每个 Framework 的 bundleID 都是不一样的。那就要换成通配证书。但通配证书会让极光推送,地图等功能失效,只能找其它的解决方案,最后在 CocoaPods 的 issues 里找到了解决方案。

Podfile 中添加如下代码:

  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

完成后的 Podfile 大致如下:

# Podfile
platform :ios, '8.0'

use_frameworks!

  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

target 'TargetName' do
  pod 'AFNetworking'
  pod 'SDWebImage'
end

EOF~

你可能感兴趣的:(第三方库使用 Framework,用 Jenkins 打包时报错)