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

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

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

静态库

但考虑到要和 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~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,113评论 8 183
  • 【木心公益书屋我写我心】 时间:2017.08.10 作者:花缘过客 无题 终于把娃哄睡着了,其他所有事情也都准备...
    花缘过客阅读 222评论 0 0
  • 01 还记得我班上有个学生,大家给他起个外号:“金木水火”。 我很是不解,为什么啊?不应该是“金木水火土”吗? “...
    焦距说阅读 204评论 1 10
  • 我不喝酒,然后在某次聚会上,有人盯着我说,有些人活的很无趣。 我不懂你所说的有趣。喝酒等于有趣嘛?那酒精中毒一...
    自有魔力阅读 216评论 0 1