使用 Fastlane 管理開發憑證
先來說說憑證,可到 developer 網站中的 Certificates, Identifiers & Profiles 查看。
Automatically manage signing
- 開發憑證 development certificate
開發者從 Xcode Account 中登入 Apple ID, Xcode 即會為你的帳號產生一個 development certificate。
2. 生產憑證 distribution certificate
上架 App 的時候會需要用到的憑證。當使用 Xcode 的 Product > Archive 上傳 App 選擇 auto signing 的情況下,developer 中沒有 distribution 憑證的話,可以透過 Xcode 幫你建立一個。
這個 distribution certificate 包含了目前這台上傳 App 的 Mac 的 private key,最好是保存起來,如果需要從別的 Mac 上傳 App,需要安裝這個包含 private key 的 certificate。
一般生成憑證的步驟:需要生成好 CSR(.certSigningRequest) 檔,拿著 CSR 去產生憑證。
- 建立 Distribution certificate
記得 Download 並且在 Keychain 中導出含有私鑰的 .p12,並且備份好。
Manually manage signing
有不少因為勾選 auto signing 然後產生一堆問題。如果使用手動管理憑證,要對每台 Mac 都手動給它 certificate 也是蠻累的,想想如果團隊內有 10 幾個人,然後每次有新人來就要找出 certificate 給他。而且在 developer 中憑證個數是有上限的,當自動生成的數量一多,會造成互踢的情況。
所以我選擇使用 fastlane 來管理這些麻煩的憑證。
{ 乾淨的開發者帳號:使用 nuke & match }
- 使用加密 repo 來存放憑證 ,對應的資料架結構如下:必須包含 certs 與 profiles 這兩個資料夾。
官方說明:
The certs
folder contains all certificates with their private keys
The profiles
folder contains all provisioning profiles
然後 push 到 master。基本上會用到的就 master,如果你有多帳號或多 target 可以使用不同的 branch 來管理不同的憑證。
2. 在 terminal 下執行 ,將憑證清理乾淨
fastlane match nuke developmentfastlane match nuke distribution
3. 接著執行
fastlane match developmentfastlane match adhocfastlane match appstore
fastlane 會自動幫你建立好開發與生產的憑證,包含 .cer 與 .p12,並同步更新 repo 底下的檔案。
如果說,你的開發者帳號是與其他 App 共用,且 certificate 已經達上限了,該怎麼辦呢?或者無法使用 nuke 呢?或者你根本沒有權限可以 access 開發者帳號,你只能拿到一個 .cer 檔。
那就必須取得開發者帳號上特定的 certificate 來建立 provision profile 了。
{ 使用存在的 .cer 來 match 開發者憑證 }
首先,你仍需準備一個加密 repo 來存放憑證 ,對應的資料架結構如下:包含 certs 與 profiles 這兩個資料夾。
- import 下載的 .cer 至 keychain
- export 需要的 .p12
請不要為你的 p12 添加任何密碼(password)
現在你會擁有兩個檔案:.cer 跟 .p12
這邊我將分別將他們命名為 certificates.cer 與 certificates.p12 方便後續說明
3. 再來,請為這兩個檔案進行加密(Encrypt)
openssl enc -aes-256-cbc -k "ENCRYPT_WITH_PASSWORD" -in "certificates.cer" -out "certificates.new.cer" -a -e -saltopenssl enc -aes-256-cbc -k "ENCRYPT_WITH_PASSWORD" -in "certificates.p12" -out "certificates.new.p12" -a -e -salt
ENCRYPT_WITH_PASSWORD 是指之後執行 match 指令要輸入的密碼,團隊中成員第一次使用 match 下載憑證時輸入的密碼。請自行替換~
4. 請把由指令產生的 certificates.new.cer 與 certificates.new.p12 重新命名成你的 certificate ID。
certificate ID 可以由 apple developer 網址中找到。
點擊開發者帳號底下已存在的 certificate,上方網址列中最後的序號就是 certicate ID
5. 將命名好的 .cer 跟 .p12 推上 repo
6. 此時可以使用 fastlane match 來產生對應的 provision profiles 了
(下一步:用 fastlane 下載憑證…)