自动签名
打包分为手动签名和自动签名。手动签名需要手动指定
Code Signing
和Provisioning Profile
。这里是将手动签名改为自动签名的操作。1. 修改工程的
Build Setting
Code Signing Style
改为Automatic
Code Signing Identity
全部改成iOS Developer
Provisioning Profile
改为Automatic
PROVISIONING_PROFILE
将手动指定的清空
如图所示
2. 自动打包脚本里
xcodebuild
的命令需要加上allowProvisioningUpdates
参数选项。3. 修改
exportOptionsPlist
对应的plist文件,删除provisioningProfiles
和signingCertificate
的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...