XCode升级至8.0,Jenkins打包签名问题
升级Xcode8之后,Jenkins自动打包就不行了,问题主要出在签名上。XCode8.0出现了自动签名(automatically signed)的功能,并且对于一个新的Xcode项目,默认是开启了自动签名的,因此导致直接升级Xcode8将导致Jenkins之前的打包配置失效。
报错如下:
xxxxx has conflicting provisioning settings. xxxxx is
automatically signed
, but code signing identity xxxxxxxxxxxxx has been
manually specified
.
Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.
目前官方没有提供此功能开关的命令行接口,所以只能通过打开项目取消勾选,并在下拉框中选择对应签名后,才能用指令进行打包。
基于以上思路,我的做法是,"手动勾选"->"手动取消勾选,下拉框中选择对应签名"。然后diff一下前后project.pbxproj里面的内容,打算通过shell指令修改文件内容,模拟手动的上述步骤。
方法如下:
sed -i "" s/'ProvisioningStyle = Automatic;'/'DevelopmentTeam =
XXXXXXXXXX;ProvisioningStyle = Manual;'/g xxx.xcodeproj/project.pbxproj
sed -i "" s/'PROVISIONING_PROFILE = "";'/'PROVISIONING_PROFILE = "
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";'/g xxx.xcodeproj/project.pbxproj
sed -i "" s/'PROVISIONING_PROFILE_SPECIFIER = "";'/'PROVISIONING_PROFILE_SPECIFIER =
xxx;'/g xxx.xcodeproj/project.pbxproj
sed -i "" s/'DEVELOPMENT_TEAM = "";'/'DEVELOPMENT_TEAM =
XXXXXXXXXX;'/g xxx.xcodeproj/project.pbxproj
额外的一些问题——升级到了最新系统macOS Sierra:
打包中如果报出如下错误:
User interaction is not allowed
codesign failed with exit code 1
可能是系统升级造成的问题,解决办法:
(1)在应用程序里搜索Keychain Access,中文叫钥匙串访问权限
(2)找到你的证书,右击 — 显示简介 — 访问控制 — 选中【允许所有应用程序访问此项目】 — 存储更攺 — 输入密码后保存更攺,解决问题。