犹落

不雨花犹落,无风絮自飞。

0%

Xcode自动打包那些事

这里记录一下关于Xcode自动打包的那些事。

自动打包

完整的自动打包的流程我还没研究。主要是导入证书,下载更新源码,并执行xcodebuild的命令。

自动签名

自动打包分为手动签名和自动签名。手动签名需要手动指定Code SigningProvisioning Profile。这里是将手动签名改为自动签名的操作。

  1. 修改工程的Build Setting
    1. Code Signing Style改为Automatic
    2. Code Signing Identity全部改成iOS Developer
    3. Provisioning Profile改为Automatic
    4. PROVISIONING_PROFILE将手动指定的清空

如图所示

  1. 自动打包脚本里xcodebuild的命令需要加上-allowProvisioningUpdates参数选项。
  2. 修改exportOptionsPlist对应的plist文件,删除provisioningProfilessigningCertificate的key和value,并修改自动签名
1
2
<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,或者使用以下命令:

1
$ security cms -D -i xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision

参考:

https://www.jianshu.com/p/e691a81d576c

https://developer.apple.com/videos/play/wwdc2017/403/

https://developer.apple.com/library/archive/technotes/tn2339/_index.html