iOS如何實現自動化打包

前言

在咱們的平常開發工做中,避免不了會出現這樣的場景:需求迭代開發完成以後,須要提供ipa包給QA同窗進行測試,通常會執行以下流程:1.執行Git Pull命令,拉最新的代碼到本地 2.Pod Install安裝最新的依賴庫 3.在Xcode點擊Archive編譯並打包 4.選擇輸出一個iOS AdHoc模式的ipa文件 5.將ipa上傳到Fir平臺,生成二維碼供測試同窗安裝。ios

即使整個過程很順利,也須要消耗開發同窗十到二十分鐘的時間,但若是測試過程當中發現有問題,那麼須要修復完畢後重覆上面的這幾個步驟。對於開發同窗來講,這種重複且沒有技術含量的機械工做簡直是噩夢啊!git

正文

那麼什麼樣的工具能夠幫助開發同窗解決這個問題呢?下面就介紹一下,目前市面上比較流行的自動化流程工具——Fastlane。Fastlane是用Ruby語言編寫的一套自動化工具集和框架,每個工具實際都對應一個Ruby腳本,用來執行某一個特定的任務,而Fastlane核心框架則容許使用者經過相似配置文件的形式,將不一樣的工具備機而靈活的結合在一塊兒,從而造成一個個完整的自動化流程。到目前爲止,Fastlane的工具集基本上涵蓋了打包,簽名,測試,部署,發佈,庫管理等等移動開發中涉及到的內容。同時該套件也支持與 Jenkins 、CocoaPods、xctools 等其餘第三方工具的集成。github

初步瞭解以後,讓咱們來看一下在如何項目裏面應用fastlane。xcode

第一步、安裝及初始化:

1.安裝 Xcode command line tools:app

xcode-select —install框架

2.安裝fastlane工具

sudo gem install fastlane -NV學習

3.進入項目路徑下,初始化fastlane(這部分可根據實際項目須要配置)測試

fastlane initui

3.1.選擇想使用fastlane作什麼?

3.2.要求你輸入Apple開發證書的App ID

3.3.是否管理APP的metadata

3.4.一路enter,直到初始化成功

3.5.初始化完成後的文件目錄結構



第二步、知識準備:

1.文件介紹

Appfile

存儲App信息,好比Apple ID,App Identifier,Team ID等信息。

Fastfile

自動化腳本配置文件,全部的任務都是在這個文件來調度的。

.env

全局的環境配置文件,文件裏面咱們能夠配置一些全局的信息,其餘文件能夠經過相似ENV['Apple_Id']這種方式獲取。

Deliverfile

上傳AppStore包須要的配置文件,在這個文件裏面能夠設置App Store Connect的全部配置項。

metadata

存放APP元數據文件,包括關鍵詞、版本更新日誌、圖標等。

screenshots

存放應用截圖

2.經常使用的工具集(action)介紹

  • scan(run_tests):自動運行測試工具。
  • cert(get_certificates):自動建立iOS代碼簽名證書(.cert文件),若是存在則下載已存在的證書文件。
  • sigh(get_provisioning_profile): 下載provisioning profiles。
  • gym(build_ios_app): 編譯、打包,生成簽名的ipa文件 。
  • deliver(upload_to_app_store): 上傳App到App Store Connect。
  • snapshot(capture_ios_screenshots): 截圖。
  • 。。。

更多的action介紹能夠參考fastlane文檔中的介紹:docs.fastlane.tools/actions/

3.lane介紹

當咱們對Fastfile文件進行編寫時,實際上就上經過在自定義的lane中添加合適的工具集action讓fastlane按照咱們的意願去順序執行任務,固然fastlane默認就有一些系統級lane。

系統級lane:

  • before_all,就是在執行一次腳本以前首先執行的代碼,咱們能夠在這裏面執行一些公共的東西,好比git_pull,cocoapods。
  • after_all, 成功結束以後,處理共有的後置邏輯。
  • before_each,每次執行 lane 以前都會執行一次。
  • after_each,每次執行 lane 以後都會執行一次。
  • error,在執行上述狀況任意環境報錯都會停止並執行一次。

    第三步、代碼示例:

    有了上面的知識準備,咱們就以上傳ipa包到Fir爲例,來看看fastlane自動化打包具體的代碼是怎麼實現的。

    首先看一下.env文件:


    而後是Appfile:


    最後就是咱們的FastFile:




    當咱們完成上面的操做之後,咱們就能夠在終端工具內經過fastlane upload_fir build:PublicDebug log:update_info一行代碼來實現打包並上傳ipa包到Fir平臺了,是否是很酷!

    固然你也能夠在咱們的項目目錄中找到咱們的ipa包、dsym文件、fastlane的打包日誌文件等等。



    結語

    經過使用Fastlane實現自動化打包之後,開發同窗終於能夠跟繁瑣的機械工做說拜拜了~

    除了本文介紹的功能,fastlane還有更多的妙用等着你們去挖掘,好比自定義action,Plugin,又好比持續集成,等等。在此本文也僅是起一個拋磚引玉的做用,但願你們能共同探討fastlane的更深層的用途。

    最後聲明,本文主要是爲了用於階段性學習記錄,不會用於商業用途,如不慎存在侵權行爲,請隨時聯繫maojiadong921@gmail.com。

    參考資料:

    fastlane GitHub地址:github.com/fastlane/fa…

    fastlane 文檔說明地址:docs.fastlane.tools/

    相關文章
    相關標籤/搜索