现在想必大多数公司都开始进行持续集成(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~