Fastlane match未使用已有签名证书,如何指定使用旧证书?
如何强制Fastlane使用已有的旧签名证书
当然可以强制Fastlane复用你之前创建的旧证书!我之前也碰到过这个糟心的问题——明明有现成的证书,Fastlane偏要新建,折腾了好一阵才捋清楚解决办法,给你分享几个实用方案:
方法一:在Fastfile中直接指定证书信息
你可以在调用match或者gym的时候,明确指定要使用的证书UUID或名称,让Fastlane精准定位到旧证书:
- 如果用
match管理证书和配置文件,添加certificate_name参数指定证书名称:match( type: "appstore", certificate_name: "你的旧证书名称(比如iOS Distribution: XXX Corp)", readonly: true # 可选,防止意外创建新证书 ) - 如果直接用
gym打包,可以在export_options里指定证书的UUID或名称:gym( export_method: "app-store", export_options: { provisioningProfiles: { "com.yourapp.bundleid" => "你的旧配置文件名称" }, signingCertificate: "iOS Distribution", # 或者证书UUID signingStyle: "manual" } )
方法二:开启Match的只读模式
Match默认会自动创建缺失的证书/配置文件,开启readonly模式后,它只会查找已有的资源,找不到就报错,绝不会生成新证书:
match(type: "adhoc", readonly: true)
注意:开启前要确保你的旧证书和对应的配置文件已经存在于Match的Git仓库(或其他存储方式)中,不然会提示找不到资源。
方法三:手动配置签名参数
如果你的项目已经手动设置了签名信息,可以让Fastlane完全遵循Xcode的本地配置,不自动生成任何签名资源:
gym( use_legacy_build_api: false, skip_package_ipa: false, signing_style: "manual", use_automatic_signing: false )
这种方式下,Fastlane会直接使用你在Xcode中选择的旧证书和配置文件,不会自作主张创建新的。
额外注意事项
- 先确认你的旧证书在Apple开发者账号中未过期、未被吊销,且对应的配置文件也处于有效状态;
- 如果之前用Match生成过新证书,记得清理掉开发者账号中多余的证书,避免Fastlane混淆;
- 可以用
fastlane cert list命令查看本地和账号中所有的证书,确认旧证书的UUID和名称是否正确。
内容的提问来源于stack exchange,提问作者Tunds
相关产品推荐
相关产品推荐

