pab*_*art 72 xcode continuous-integration xcodebuild jenkins travis-ci
随着Xcode 8的发布,Apple推出了一种管理签名配置的新方法.现在你有两个选择Manual和Automatic.
根据WWDC 2016年关于代码签名的会议(WWDC 2016 - 401 - Xcode应用程序签名中的新功能),当您选择Automatic签名时,Xcode将:
但根据Apple在该会话中所说的内容,Automatic Signing将会使用Development signing并将仅限于Xcode创建的配置文件.
当您尝试Automatic Signing在CI环境(如Travis CI或Jenkins)上使用时,会出现此问题.我无法找到一种简单的方法来继续使用自动和签署分发(因为Xcode强制您使用开发和Xcode创建的配置文件).
新的"Xcode创建的配置文件"不会显示在开发人员门户中,虽然我可以在我的机器中找到...我应该将这些配置文件移动到CI机器,构建Development和导出Distribution吗?有没有办法覆盖Automatic Signing使用xcodebuild?
d4R*_*4Rk 60
我使用Jenkins CI和Xcode插件基本上遇到了同样的问题.我结束了自己使用的构建和代码签名的东西xcodebuild.
为了成功完成以下步骤,您需要安装必要的配置文件和证书.这意味着您的代码签名应该已经正常工作.
xcodebuild -project <path/to/project.xcproj> -scheme <scheme-name> -configuration <config-name> clean archive -archivePath <output-path> DEVELOPMENT_TEAM=<dev-team-id>
Run Code Online (Sandbox Code Playgroud)
DEVELOPMENT_TEAM:您的10位开发人员团队ID(类似于A1B2C3D4E5)xcodebuild -exportArchive -archivePath <path/to/your.xcarchive> -exportOptionsPlist <path/to/exportOptions.plist> -exportPath <output-path>
Run Code Online (Sandbox Code Playgroud)
例子exportOptions.plist:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>development</string>
<key>teamID</key>
<string> A1B2C3D4E5 </string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
method:是的一个development,app-store,ad-hoc,enterpriseteamID:您的10位开发人员团队ID(类似于A1B2C3D4E5)无论如何,这个过程更接近你手动使用Xcode,而不是像Jenkins Xcode插件那样.
注意:.xcarchive文件将始终是开发签名,但在第二步中选择"app-store"作为方法将执行正确的分发签名,并将分发配置文件包含为"embedded.mobileprovision".
希望这可以帮助.
pab*_*art 35
尝试了几个选项后,这些是我能够在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 = Automaticwith 实例ProvisioningStyle = Manual.sed可以用于在pbxproj文件中找到一个简单的替换:
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' <ProjectName>.xcodeproj/project.pbxproj
@thelvis还使用gem 创建了一个Ruby脚本xcodeproj.该脚本可让您更好地控制更改内容.
xcodebuild然后将使用CODE_SIGN_IDENTITY项目中设置的代码签名identity()以及配置文件(PROVISIONING_PROFILE_SPECIFIER).这些设置也可以作为参数提供xcodebuild,它们将覆盖项目中设置的代码签名标识和/或配置文件.
编辑:使用Xcode 9,
xcodebuild有一个新的构建设置参数CODE_SIGN_STYLE可供选择Automatic,Manual因此不需要在项目文件中查找和替换自动与手动的实例,更多信息在WWDC 2017会话403签署Xcode和Xcode服务器的新功能
手动签名将完全控制正在使用的代码签名标识和配置文件.这可能是最干净的解决方案,但缺点是失去了自动签名的所有好处.
要了解有关使用Xcode 8进行代码签名的更多信息,我真的推荐本文以及WWDC2016会话401 - Xcode应用程序签名中的新功能
| 归档时间: |
|
| 查看次数: |
53281 次 |
| 最近记录: |