一、背景
使用fastlane来管理iOS的证书时,有时候由于人事交接不完全,或者首次生成证书的那个电脑由于某种原因丢失fastlane match密码。造成在使用fastlane来打包时,需要输入密码,否则打包进行不下去。
二、问题
Passphrase for Match storage:******
Type passphrase again:****
Couldn't decrypt the repo, please make sure you enter the right password!
三、问题截图

四、问题分析:
1.fastlane管理证书流程:
-
需要使用公司的一个gitlab或者github仓库来存储证书,在iOS工程的fastlane文件夹下的Matchfile文件中进行配置。
-
在fastlane文件夹下的Appfile中配置bundle id、Apple账号等
-
fastlane match时会将初次设置的密码存在钥匙串中。
-
fastlane match --help命令可以查看fastlane match后面的指令参数。其中有一个change_password的指令,表示可以更改加密证书的密码。
-
如果清空证书git仓库中的证书,是可以重新执行fastlane match来设置加密/解密证书的密码的。
-
如果Apple证书中心上的发布证书已经有2个,或者开发证书已经有4个(针对同一个bundle id),那么fastlane去生成证书时就会报错,表示证书已经达到创建上限,无法由fastlane再次生成。
五、解决办法:
解决密码问题的方法在于2种:
第一,就是按照2中的步骤,去钥匙串中查找match开头的那个密码,尝试输入,测试是否可以解决。
第二,要么就是需要清空证书git仓库下的所有证书(要删除Apple证书中心无用的一些证书,让fastlane可以创建新证书,否则数量超发,新建不了)。然后在iOS工程的fastlane文件夹所在的目录下,重新执行fastlane match (development、distribution),等待fastlane通过Apple API去Apple证书中心生成新证书和profile文件,等在Apple证书中心生成新证书后,会自动下载到本地并安装到钥匙串中。
删除Apple证书中心的证书的命令:
fastlane match nuke (develop、distribution)
可以用来删除证书和profile,执行这个命令时,会让你选择删除哪些证书。