在尝试了一些选项之后,这些是我可以在CI服务器上使用的解决方案:
在CI环境中包括开发人员证书和私钥以及自动生成的配置文件:
使用会Automatic signing
强制您使用Developer
证书和auto-generated provisioning profiles
。一种选择是将开发证书和私钥(应用程序->实用程序->钥匙串访问)以及自动生成的配置文件导出到CI机器。定位自动生成的配置文件的一种方法是导航至~/Library/MobileDevice/Provisioning\ Profiles/
,将所有文件移动到备份文件夹,打开Xcode并存档项目。Xcode将创建自动生成的开发配置文件,并将其复制到该Provisioning Profiles
文件夹中。
xcodebuild archive ...
将为创建一个.xcarchive
签名Development
。xcodebuild -exportArchive ...
然后可以将构建辞职Distribution
在调用xcodebuild
一个解决方法是更换的所有实例ProvisioningStyle = Automatic
与ProvisioningStyle = Manual
在项目文件。sed
可用于在pbxproj
文件中简单查找替换:
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' <ProjectName>.xcodeproj/project.pbxproj
@thelvis还创建了一个 使用xcodeproj
gemRuby脚本来完成此任务。该脚本使您可以更好地控制更改。
xcodebuild
然后将使用代码签名身份(CODE_SIGN_IDENTITY
项目中设置)以及供应配置文件(PROVISIONING_PROFILE_SPECIFIER
)。这些设置也可以作为参数提供xcodebuild
,它们将覆盖项目中设置的代码签名标识和/或供应配置文件。
编辑:使用Xcode 9,xcodebuild
有一个新的生成设置参数CODE_SIGN_STYLE
之间进行选择Automatic
,Manual
因此不需要在项目文件中查找和替换手动实例的自动实例,更多信息 WWDC 2017 Session 403中的Xcode和Xcode Server签名中的新增功能
手动签名将完全控制所使用的代码签名标识和配置文件。这可能是最干净的解决方案,但缺点是失去了自动签名的所有优点。
要了解有关使用Xcode 8进行代码签名的更多信息,我真的推荐这篇文章以及WWDC2016会议401-Xcode应用程序签名中的新增功能