问题
No code found and can not a new one you
背景:
在iOS的app的持续构建中使用了fastlane来管理证书,并且配置脚本命令上传Testflight、Appstore。在打包过程中,fastlane报了如下截图中错误.
截图:
分析问题步骤:
- 在打包机上通过Xcode检查签名配置(或者在钥匙串中查看本地证书是否都有效)。首先在执行打包的电脑机器上,通过Xcode打开打包的工程,查看对应iOS target的下的签名配置Signing & Capabilities,检查Debug and Profile、Adhoc、Release环境下,选择的profile证书是否匹配(若不匹配,profile下拉选择框下会有黄色三角)。
- 检查target下的build settings中的signing配置。
确保Adhoc、Debug、Profile、Release对应的配置正确。
3. 问题定位。第2步中的很好确定,很可能出现问题的就是第1步中的配置。一般在cer证书没有问题的情况下,出现本文中问题的情况,都是由于profile文件和cer不匹配导致的,我的情况就是如问题截图中一样的。导致不匹配的一个原因是:打包机上下载的profile,这个profile中的Certificates选择不正确,这是因为原先iOS项目中已经有一个发布证书,但是我用fastlane match重新生成了一个证书,但是fastlane match在生成profile文件时,使用了原先的发布证书。而我打包机上的发布证书,只有fastlane match生成的那个。
4. 总结发布证书有2个,只有1个是fastlane match通过Apple的API生成的。但是fastlane match命令生成的profile使用的是之前的发布证书。
解决办法:
方法一:
登录Apple 证书中心,在下,找到在步骤1所示的黄色警告⚠️的文件,进入详情,点击Edit,确保选择的是打包机钥匙串中最新的那个发布证书。保存修改后,这个到本地,并双击安装这个。
方法二:
(比较有风险,风险点就是需要删除所有的发布证书。如果之前的发布证书或者其p12证书,被使用在其他第三方的平台,则需要更新其他平台上使用的这个证书)使用fastlane match nuke删除所有的证书和profile(或者fastlane match nuke distribution删除发布相关的证书),切记尤其删除了推送证书,那么需要及时更新所有的其他推送平台上的证书。