Xcode使用自动签名进行打包

Tags
Apple
iOS
Date
Dec 26, 2018

自动签名

打包分为手动签名和自动签名。手动签名需要手动指定Code SigningProvisioning Profile。这里是将手动签名改为自动签名的操作。
1. 修改工程的Build Setting
  1. Code Signing Style改为Automatic
  1. Code Signing Identity全部改成iOS Developer
  1. Provisioning Profile改为Automatic
  1. PROVISIONING_PROFILE将手动指定的清空
如图所示
notion image
notion image
2. 自动打包脚本里xcodebuild的命令需要加上allowProvisioningUpdates参数选项。
3. 修改exportOptionsPlist对应的plist文件,删除provisioningProfilessigningCertificate的key和value,并修改自动签名
<key>signingStyle</key> <string>automatic</string>

问题解决

找不到配置文件

Code Signing Error: No profiles for ‘com.xxx’ were found: Xcode couldn’t find any iOS App Development provisioning profiles matching ‘com.xxx’. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.
这个错误应该是上述自动签名的打包脚本的问题。自动打包脚本里xcodebuild的命令需要加上-allowProvisioningUpdates参数选项。

证书冲突

Code Signing Error: xxx has conflicting provisioning settings. xxx is automatically signed for development, but a conflicting code signing identity iPhone Distribution 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.
这个错误应该是上述自动签名的Build Setting的问题。Code Signing Identity全部改成iOS Developer

未知错误

unknown error -1=ffffffffffffffff Command /usr/bin/codesign failed with exit code 1
Jenkins自动打包遇到这个失败时,可以Google一下,其中一个解决方案是在钥匙串里修改密钥的访问控制。
双击密钥 -> 访问控制 -> 允许所有应用程序访问此项目

更新设备无效

添加新设备后,Jenkins的自动签名打的包,在新设备上无法安装。
这是因为自动签名打包时,xcodebuild会自动下载Provisioning Profile并缓存在~/Library/MobileDevice/Provisioning\ Profiles/,而缓存没有更新,还是旧的设备列表,所以在新设备上无法安装。
解决方案是只需在这个目录下将对应的.mobileprovision删掉即可。或者直接清空该目录下所有文件。
至于如何查看.mobileprovision文件内容,可以使用vscode,或者使用以下命令:
$ security cms -D -i xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
 

参考

 

Loading Comments...