fastlane 自動化打包工具實踐

噠噠噠就是我發表於2019-04-13

最近手裡好多專案都是需要打企業版本並上傳到fir上去,每次構建版本至少要10分鐘,時間長不是最難忍受的,難忍受的是整個過程需要你全程參與,比如選擇證書、比如下一步,下一步等,一套搞下來,心累,因此找一個自動化打包工具來節省體力刻不容緩了,求生欲啊,本次我找的工具就是fastlane(docs.fastlane.tools),一款用ruby開發的構建工具,可以自動打包並上傳到APPStore,上傳到fir,上傳到蒲公英,具體過程往下看:

1.首先安裝fastlane前的準備工作:

確保你的Mac環境有ruby環境,執行ruby-v,檢視當前ruby的版本,如果還沒有ruby環境,請自行百度安裝,如果你的專案已經使用cocoapod管理第三方包,那麼你的mac內就已經安裝了ruby環境了,其次我們還需要安裝xcode的命令列工具,當然這裡不需要自己安裝,xcode已經幫我們完成了.

2.正式安裝fastlane:

執行sudo gem install fastlane

fastlane 自動化打包工具實踐
安裝完成後就可以cd到專案目錄下:

執行fastlane init

fastlane 自動化打包工具實踐
初始化工程中需要你完成一些列選項:

fastlane 自動化打包工具實踐
1是自動截圖

2是打測試包

3是Appstore上架

4是自定義,

這裡我是打包企業版本,選擇4,當然所有自定義的包括打企業包、上appstore等都可以自定義指令碼來完成.

初始化完成後專案目錄下會有fastlane的檔案目錄:

fastlane 自動化打包工具實踐
其中:

Appfile,用於存放AppID和開發者的AppleID,這個檔案在我的實踐中並沒有用到.

Fastfile,用於管理建立的lane,lane則可以呼叫各個action(即fastlane的工具鏈)這個檔案是核心檔案.

Snapfile,用於指定需要進行螢幕截圖的裝置型別(根據選項生成,可自己建立檔案用於配置)

Deliverfile,用於配置釋出至appStore的檔案(根據選項生成,可自己建立檔案用於配置),如果你是選擇打包後自動上傳到appstore,那麼這個檔案是必要的,當然也是執行相關命令生成的,後續會提到.

Snapfile和Deliverfile是不會自動生成的,還需要執行其他命令,這個下面有介紹.

這裡我只選擇了自定義,所以只有前兩個檔案. 接下來在Fastfile來建立命令,這裡構建APP需要使用build_app的action,具體的action介紹自己去看(docs.fastlane.tools/actions),當前你可以執行,fastlane action xxx,xxx代表action的名稱,比如檢視build_app:

fastlane 自動化打包工具實踐
接下來進入本文的重點,如何編寫構建指令碼 這是具體的指令碼,這個指令碼是打包企業版本:

 desc "企業版本" 
 lane :enterpriseProduction do #自己對當前的lane命名
	build_app( #build_app是打包的action,裡面詳細的命令請檢視https://docs.fastlane.tools/actions/build_app
		workspace:"xxx.xcworkspace",#裝有coccoapod的,找到專案的workspace
		scheme:"xxx", #專案命名
		export_method:"enterprise",#匯出方式
		output_directory:"./fastlane/package/enterprise",#打包後ipa的存放路徑
		output_name:get_build_number()#輸出ipa的檔名為當前的build號
		configuration:"Release", #環境
		clean:true #打包前是否需要執行clean	
	   #export_options: { #其他選項,這裡手動配置打包的簽名證書, 筆者目前都是自動化打包,因此手動打包這一部分並沒有去驗證,各位有需要的可以自己搗鼓搗鼓
            #provisioningProfiles: { 
               # "com.example.bundleid" => "Provisioning Profile Name",
               #3 "com.example.bundleid2" => "Provisioning Profile Name 2"
     # }
    #}
    )
	#自動上傳fir
	firim(firim_api_token:"fir的token")
	#自動上傳蒲公英
    pgyer(api_key:"apiKey",user_key:"userkey")
    # add actions here: https://docs.fastlane.tools/actions
  end
複製程式碼

上面我的執行指令碼,這裡有個注意點,如果你想寫註釋請用#開頭,筆者之前用//結果各種語法錯誤,尷尬.筆者一直用的自動化打包方式,fastlane也是預設使用自動化打包,如果你需要手動打包,那麼需要配置簽名檔案等.

編寫完成後可以執行打包命令了:

fastlane enterpriseProduction(lane的命名)

執行過程中會build你的整個專案,這中間需要一些時間,打包完成後還需要上傳到你們指定的地方去,也是需要時間的,耐心等候.最終:

fastlane 自動化打包工具實踐
上面列出了本地打包的耗時458秒.檢視下打包出來的目錄:

fastlane 自動化打包工具實踐

上傳到fir或者蒲公英這裡筆者暫時是遮蔽掉了.各位需要上傳到fir或者蒲公英,那麼接著往下看:

1.上傳到firim

首先需要安裝firim的工具,cd到你的專案目錄下,這裡的fir以及蒲公英的工具都必須在專案目錄下安裝:

執行fastlane add_plugin firim

fastlane 自動化打包工具實踐

這個安裝過程還順帶需要安裝gem,還需要輸入幾次密碼,照著做就行

安裝完成後在fastlane 檔案內加上firim(firim_api_token:"fir的token"),如上圖,這時你需要獲取到你的firim賬號上的token,並填寫進去:

fastlane 自動化打包工具實踐
. 最後再次執行打包命令,整個配置沒問題成功後就可以去fir上檢視.

2.上傳到蒲公英

步驟和fir一致,整個過程中執行的命令不一樣而已,你也可以參考蒲公英的文件https://www.pgyer.com/doc/view/fastlane:

首先去專案目錄下執行:

fastlane add_plugin pgyer

成功後在fastlane檔案內新增:

pgyer(api_key:"apiKey",user_key:"userkey"),其中key去蒲公英上取.

最後執行打包命令,成功後去蒲公英上檢視.

以上是企業版本的打包及上傳到不同平臺的全實踐.

接下來講解的是打包上傳到itunes上去:

Fastlane的配置如下:

lane:Appstore do
   build_app(
   	workspace:"xxx.xcworkspace",
   	scheme:"xxx",
   	export_method:"app-store",#這裡填appstor
   	output_directory:"./fastlane/package/appstore",#打包後的路徑,自己隨意
   	configuration:"Release",
   	clean:true	
   	)
   upload_to_app_store( #上傳appstore的配置
   	app_identifier:"com.creator.pro.eamp",#bundle Id
   	username:"yaqian.tang@chinacreator.com",#apple Id
   	ipa:"./fastlane/package/appstore/xxx.ipa", #和output_directory的路徑對應
   	skip_screenshots:true,
   	skip_app_version_update:false,
   	submit_for_review:false, 
   	reject_if_possible:true,
   	skip_metadata:true
   )
  	
   # add actions here: https://docs.fastlane.tools/actions
 end
複製程式碼

執行打包命令後,會一步一步要你填寫 apple ID及密碼,如實填寫就行,當然還需要先執行deliver init ,來初始化Deliverfile、screenshots和metadata,這包含了app的截圖、icon等一些基礎資料,如果你的APP以及在itunes上初始化完成了,那麼執行deliver init,就可以把app的相關資訊都下載下來,如下,自己去對應的資料夾下看詳細內容:

fastlane 自動化打包工具實踐

你選擇自定義的時候是不會自動給你生成的,你選擇3上傳到appstore,則是可以自動生成,當然你上架app的第一個版本的資訊初始化可以選擇完全由fastlane來構建,筆者這裡暫時不去探究fastlane中app在itunes上的初始化過程,我個人的建議是自己去itunes上生成app的第一個版本,後續版本的迭代使用fastlane,那樣就只需要關心ipa包的上傳.

終於寫完了,倒騰了一天,整套下來確實是節省了許多打包的時間,心情也好了,開心,學會用好工具也是必修課.

相關文章