1. 程式人生 > >iOS 自動打包

iOS 自動打包

正常產品開發完成之後,我們都需要給測試人員打包,又是測試包,又是生產包的,打一次包需要浪費十幾分鐘的時間,甚至有時候,你剛打完包,產品過來告訴你某個地方需要微調一下(麻蛋,這個時候是不是想弄死他),但是沒辦法,只好改完bug,繼續打包,就這樣可能一上午或者一下午就這樣浪費了,所以有一個能夠自動化打包的工具不僅能夠為我們節省大量的時間,還可以讓我們能夠裝逼。。。。。(這是重點)

 

其實自動化打包的工具有很多,比較流行的有Jenkins和fastlane,原來嘗試過Jenkins,感覺這個工具比較麻煩,需要配置的東西非常多,還需要倉庫地址等等很多資訊,不像fastlane感覺是傻瓜式的,非常簡單,目前Github上已經超過兩萬star了

https://github.com/fastlane/fastlane

而且團隊人員眾多,下面步入正題!!!

 

安裝前的準備工作

 

1.首先確認是否安裝了ruby,終端檢視下ruby版本

 

ruby -v

 

2.確認是否安裝了Xcode命令列工具

 

xcode-select  --install

 

如果出現

 

640?wx_fmt=other

 

表示已經安裝成功

 

如果出現:

 

640?wx_fmt=other

 

就點選安裝就行了。。。

 

下面就正式開始安裝fastlane了

 

安裝步驟

 

安裝fastlane

 

sudo gem install fastlane

的時候出現  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory.

改為 sudo gem install -n /usr/local/bin fastlane  即可

 

fastlane init

 

初始化的過程中會出現下面的選項:

 

640?wx_fmt=other

 

第一個選項的意思是:自動截圖。這個功能能幫我們自動擷取APP中的截圖,並新增手機邊框(如果需要的話)


第二個選項的意思是:自動釋出beta版本用於TestFlight


第二個選項的意思是:自動釋出到AppStore


第二個選項的意思是:手動設定

 

我在這裡選的是第四個(大家可根據自己需要選擇),截圖如下:

 

640?wx_fmt=other

 

緊接著一直點選enter鍵,知道安裝成功會出現如下截圖

 

640?wx_fmt=other

 

安裝成功之後,會在我們的工程目錄生成一個fastlane資料夾:

 

640?wx_fmt=other

 

然後此時,我們需要自己編輯Appfile和Fastfile兩個檔案:

 

首先看Appfile檔案,我的如下:

 

640?wx_fmt=other

 

然後是Fastfile檔案:

 

640?wx_fmt=other

 

其中的firim是指定到上傳到fir的,如果只是單純的想把包打出來可以不寫哪一行。

 

這樣的話就可以順利打包了。。。


執行打包命令:

 

fastlane betaDebug

 

打包成功截圖如下:

 

640?wx_fmt=other

 

自動上傳至fir或者蒲公英

 

但是,如果想將自己打好的包直接上傳到fir或者蒲公英等平臺,請看下面的步驟:

 

執行如下命令安裝fir外掛:

 

fastlane add_plugin firim

 

自動上傳到fir還需執行如下命令:

 

gem install fir-cli

 

如果是蒲公英平臺,安裝如下外掛:

 

fastlane add_plugin pgyer

 

此時fastlane資料夾會變成如下結構:
 

注意:package資料夾是在第一次打包的時候生成的

 

640?wx_fmt=other

 

此時執行打包命令,就可以自動打包,並上傳至fir了。

 

安裝完外掛之後Pluginfile檔案內容如下:(注意:你安裝了什麼外掛,就會在該檔案中顯示)

 

640?wx_fmt=other

 

上傳fir成功截圖如下:

 

640?wx_fmt=other

 

生成的ipa包和dysm檔案如下:

 

640?wx_fmt=other

 

至此,自動化打包安裝過程結束,下面記錄下我遇到的坑。

 

遇到的坑

 

  • 錯誤一

     

     

640?wx_fmt=other

 

我遇到這個問題的原因是,證書沒有匹配對,修改Fastfile檔案,仔細檢視下export_method引數是否配對就行了。。。

 

  • 錯誤二
     

640?wx_fmt=other

 

錯誤指出的很明顯,請一定要記住:後面一定要緊跟自己寫的名稱

 

  • 錯誤三
     

打包成功了,但是上傳至fir一直失敗


忘記截圖了,大概報錯說明如下:

 

Could not find action, lane or variable 'firim'

 

我原先看文件,看到有人將Gemfile和Gemfile.lock檔案拖到fastlane資料夾裡面了,但是自動生成的話是在這個資料夾外面的,但是我想著放到一個資料夾裡面方便管理,就這樣報錯了,所以記住,它生成在哪你就放在哪就行。

 

報錯原因是,沒有找到firim這個action,可以在終端下面檢視是否安裝了這個action

 

fastlane actions [firim]

 

如果安裝了,會顯示如下:

 

640?wx_fmt=other

 

如果沒有安裝,會提示沒找到,這個時候重新安裝下外掛就好了。

 

shell指令碼打包

 

除了藉助一些開源框架外,我原來也用過shell指令碼打包,無非是自己寫一個指令碼,裡面包含很多的打包命令,但是還是感覺沒有fastlane簡單方便,有興趣的可以參考

https://github.com/stackhou/AutoPacking-iOS寫的比較詳細

 

 

總結

 

至此,利用fastlane自動化打包就算告一段落了,但是fastlane官網還提供了很多的語法說明https://docs.fastlane.tools/感興趣的可以參考下,另外說明下,由於我是最近才開始用,所以一般給測試人員打包的時候我都是用fastlane,真正要上線提交AppStore的時候,我還是用Xcode,畢竟放心。提交到App Store還沒用過,有什麼坑我也不知道,如果有人實踐過,歡迎評論區互相交流(另外,覺得寫得不錯的,請點贊❤️❤️❤️!!!哈哈)