fastlane通過match管理證書

以下所有內(nèi)容均為個人觀點阿趁,轉(zhuǎn)載請注明出處<簡書--小蝸牛吱呀之悠悠 >伊履,謝謝刚陡!

使用fastlane打包過程,遇到了一直要求輸入密碼的問題培漏,即使密碼正確也還是報錯:Couldn't decrypt the repo, please make sure you enter the right password!為了解決這個打包的問題蚯姆,研究了一下fastlane的證書管理過程沧侥,記錄如下瞎疼。

fastlane的match功能,在團隊協(xié)作中起到不錯的證書管理效果割卖,能夠讓項目可以在整個團隊內(nèi)部打包通暢前酿,不需要過度關(guān)心證書和描述文件的事情。下面將簡單介紹一下我自己的實際應(yīng)用和遇到的問題究珊。

1薪者、 配置match環(huán)境

fastlane支持自動匹配證書,首先需要先準備一個倉庫用于存放證書剿涮。然后在fastlane目錄下執(zhí)行fastlane match init(如果沒有fastlane目錄言津,需要先在項目目錄執(zhí)行fastlane init)攻人,首先會提示讓你選擇存儲方式,然后再輸入倉庫地址悬槽,最后會生成一個 Matchfile 的配置文件怀吻。(這個環(huán)節(jié)根據(jù)命令提示往下走就行了,不過多贅述)接下來初婆,我們修改一下 Matchfile內(nèi)容:

matchfile.jpg

函數(shù)說明:
git_url: 證書存儲的倉庫地址
git_branch: 倉庫分支蓬坡,不寫默認是master
storage_mode: 存儲方式
type: 默認的profile的類型,可以為: appstore, adhoc, enterprise , development
app_identifier: bundleId
readonly: true/false磅叛,true則優(yōu)先從倉庫獲取證書屑咳,沒獲取到則會去蘋果開發(fā)者中心創(chuàng)建;false則只去倉庫獲取
以上內(nèi)容也可以寫在fastlane文件里的sync_code_signing(matchi的別名)里面,效果是一樣的弊琴。當(dāng)然兆龙,這里面也可以配置蘋果賬號和密碼等信息,此處不贅述敲董,具體的根據(jù)需要翻閱文檔即可紫皇。修改完上述內(nèi)容后,我們可以通過終端執(zhí)行命令來觸發(fā):

fastlane match enterprise

也可以通過bundle來觸發(fā)action間接觸發(fā):

bundle exec fastlane ios enterprise
2腋寨、如何配置證書倉庫

將我們倉庫的名字命名為:certificates 聪铺,里面的目錄結(jié)構(gòu)為:

目錄.jpg

在這兩個文件夾中,可以配置需要的環(huán)境證書萄窜,例如:


目錄.jpg

目錄.jpg

文件夾和文件的命名具體規(guī)則如下:

-certs
  -enterprise
    -#{cert_id}.cer
    -#{cert_id}.p12

  -development
    -#{cert_id}.cer
    -#{cert_id}.p12

  -distribution
    -#{cert_id}.cer
    -#{cert_id}.p12

-profiles
  -enterprise
    -InHouse_#{bundleID}.mobileprovision

  -appstore
    -AppStore_#{bundleID}.mobileprovision

  -adhoc
    -AdHoc_#{bundleID}.mobileprovision

  -development
    -Development_#{bundleID}.mobileprovision
    

注意: 文件夾和文件的名字铃剔,層級結(jié)構(gòu)必須是上述規(guī)則,否則match找不到對應(yīng)證書脂倦。其中番宁,certs證書需要放置原始的下載的.cer證書和電腦導(dǎo)出的p12證書,這樣才可以保證其他開發(fā)人員能夠正常打包赖阻。
注意,這一步非常重要:配置完倉庫目錄后踱蠢,需要將對應(yīng)的證書用openssl加密火欧,然后才能上傳到遠端倉庫,否則茎截,你將遇到下圖的情況苇侵,無論你輸入什么密碼,都無法通過校驗企锌。原因是:fastlane在管理遠程倉庫的證書時榆浓,會先將倉庫的對應(yīng)分支拉到本地臨時文件夾中,然后找到你打包項目的證書和描述文件撕攒,再對文件進行openssl解密(fastlane認為每個證書都是經(jīng)過加密的陡鹃,所以需要解密)烘浦,而你如果沒有事先加密,那自然無法通過校驗萍鲸。

cmd.jpg

openssl命令:

#加密
openssl aes-256-cbc -k "<password>" -in "<加密前證書路徑>" -out "<加密后證書路徑>" -a -e
#解密
openssl aes-256-cbc -k "<password>" -in "<解密前證書路徑>" -out "<解密后證書路徑>" -a -d

將加密后的證書放入對應(yīng)文件夾后闷叉,需要對certs文件夾下的證書修改文件名,格式:cer_id.cer脊阴。然而握侧,證書的詳情中并不能看到證書的id,需要使用ruby腳本來查找嘿期。

3品擎、使用ruby腳本查看證書id

首先需要安裝ruby環(huán)境,此處不闡述备徐,自行谷歌孽查;其次,需要新建一個ruby文件

touch ruby.rb

然后將下面代碼復(fù)制粘貼到ruby腳本文件中坦喘,并輸入對應(yīng)蘋果賬號:

require 'spaceship'

Spaceship.login('***') #輸入對應(yīng)的蘋果賬號
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

然后cd到該文件所在目錄盲再,終端執(zhí)行命令:

ruby ruby.rb

此時會打印出所有證書的信息來(如果你的蘋果賬號關(guān)聯(lián)多個開發(fā)者賬號,需要先選擇一下你想要查看的開發(fā)者賬號)瓣铣,找到對應(yīng)的證書答朋,并將倉庫里的證書文件名替換成id,podfile文件名修改為上文所述InHouse_bundleId的格式棠笑。


ruby.jpg
5梦碗、測試match

將準備好的證書上傳git,并確保matchfile文件中的信息正確后蓖救,在終端執(zhí)行:

fastlane match

此時會讓輸入證書openssl加密時設(shè)置的密碼(如果忘記了洪规,可以參考下文步驟7重新找回或重置。)循捺,輸入完成后斩例,會自動保存到鑰匙串中,查看方式下文介紹从橘。密碼校驗通過后念赶,如果你沒有在matchfile文件中提前配置好開發(fā)者賬號,此處需要輸入兩次開發(fā)者賬號恰力,如果通過叉谜,就算是成功了,再結(jié)合fastlane的打包命令使用就可以了踩萎。

6停局、證書更新

如果證書過期,或者證書被重置了,或者新增了環(huán)境需要增加證書董栽,就涉及到倉庫證書的更新了码倦。
我們拿到相對應(yīng)證書后,將證書加密后(每一個證書和profile都需要加密)裆泳,修改文件名為證書id叹洲,prodfile文件名修改為bundleId保持倉庫目錄不變,并上傳倉庫即可工禾。

7运提、忘記openssl加密的密碼怎么辦?

方法一:忘記密碼后闻葵,可以在你自己的鑰匙串中找到民泵,如果沒有找到,可以讓其他使用腳本打過包的同事在鑰匙串中查看一下告訴你槽畔,步驟如下:
注意:找到文件名和你bundleid一樣的那個才是

鑰匙串.jpg

鑰匙串.jpg

方法二: 重置密碼

1栈妆、首先,將倉庫內(nèi)容拷貝一份到本地厢钧,然后清空并上傳倉庫鳞尔。
2、在終端執(zhí)行fastlane match命令早直,會要求你輸入密碼寥假,這時候把新密碼輸入即可。
3霞扬、去蘋果開發(fā)者中心重新下載證書糕韧,并重新加密(密碼需要和你第2步設(shè)置的一致),然后按照規(guī)則修改名字和放置文件路徑喻圃。
4萤彩、重新上傳到倉庫,并重新執(zhí)行fastlane match即可斧拍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雀扶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饮焦,更是在濱河造成了極大的恐慌怕吴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件县踢,死亡現(xiàn)場離奇詭異,居然都是意外死亡伟件,警方通過查閱死者的電腦和手機硼啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斧账,“玉大人谴返,你說我怎么就攤上這事煞肾。” “怎么了嗓袱?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵籍救,是天一觀的道長。 經(jīng)常有香客問我渠抹,道長蝙昙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任梧却,我火速辦了婚禮奇颠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘放航。我一直安慰自己烈拒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布广鳍。 她就那樣靜靜地躺著荆几,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赊时。 梳的紋絲不亂的頭發(fā)上吨铸,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音蛋叼,去河邊找鬼焊傅。 笑死,一個胖子當(dāng)著我的面吹牛狈涮,可吹牛的內(nèi)容都是我干的狐胎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼歌馍,長吁一口氣:“原來是場噩夢啊……” “哼握巢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起松却,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤暴浦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后晓锻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歌焦,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年砚哆,在試婚紗的時候發(fā)現(xiàn)自己被綠了独撇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纷铣,靈堂內(nèi)的尸體忽然破棺而出卵史,到底是詐尸還是另有隱情,我是刑警寧澤搜立,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布以躯,位于F島的核電站,受9級特大地震影響啄踊,放射性物質(zhì)發(fā)生泄漏忧设。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一社痛、第九天 我趴在偏房一處隱蔽的房頂上張望见转。 院中可真熱鬧,春花似錦蒜哀、人聲如沸斩箫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乘客。三九已至,卻和暖如春淀歇,著一層夾襖步出監(jiān)牢的瞬間易核,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工浪默, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牡直,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓纳决,卻偏偏與公主長得像碰逸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阔加,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容