关于fastlane证书复用问题

最近使用fastlane,每当新建一个project/target的时候,当执行 match development/adhoc/appstore时候,不同的bundle id对应的target,每次都会去重新生成certificate,注意不是Provision Profile,这就很麻烦了,因为苹果的个人开发者账号,certificate生成是有数量限制的。 developmentdistribution证书类型貌似都是只能生成2个。所以如果按照fastlane那种做法的话,我们只能给两个app装到真机里面玩玩。这就怕不能愉快的玩下去了,所以我们就得考虑如何复用已存在certificate,下面就是介绍如何复用。

合并已有证书到fastlane match

首先一个很重要的概念就是cert id, 拿到已有证书的cert id并告诉fastlane, fastlane知道了就不会去重新生成certificate,只会去生成Progision Porfile

下面一段ruby代码就是获取cert id:

require 'spaceship'

Spaceship.login('[email protected]')
Spaceship.select_team

Spaceship.certificate.all.each do |cert| 
  cert_type = Spaceship::Portal::Certificate::CERTIFICATE_TYPE_IDS[cert.type_display_id].to_s.split("::")[-1]
  puts "Cert id: #{cert.id}, name: #{cert.name}, expires: #{cert.expires.strftime("%Y-%m-%d")}, type: #{cert_type}"
end

执行上述代码,会输出相应的证书信息,如果该账号下有多个certificat,会全部输出,包括developmentdistribution

保持好你需要的复用的证书cert id

创建一个远程git仓库,保存你的certificatesprovisioning profiles

  • iOS/macOS证书的工作主要就是围绕certificatesprovisioning profiles这两个文件进行的。
  • 仓库目录下创建certs/distributioncerts/development目录,分别存放生成和开发环境下的相关证书文件

生成符合fastlane match的证书

  • 钥匙串中导出已有证书的certificate.cercertificate.p12文件

  • run openssl pkcs12 -nocerts -nodes -out key.pem -in certificate.p12.
    It will extract the private key to a key.pem file.

  • encrypt the files with

    openssl aes-256-cbc -k your_password -in key.pem -out cert_id.p12 -a
    openssl aes-256-cbc -k your_password -in certificate.cer -out cert_id.cer -a
    

执行完上述步骤后,就生成了fastlane match想要的certificate,当执行match development/adhoc/appstore命令后,match就不会去Apple Development Center重新生成certificate了,而是拿现有的了,然后分别丢进对应git仓库目录中,提交、推送到远程。


本文参考自:Simplify your life with fastlane match

你可能感兴趣的:(关于fastlane证书复用问题)