最近手裡好多專案都是需要打企業版本並上傳到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
安裝完成後就可以cd到專案目錄下:執行fastlane init
初始化工程中需要你完成一些列選項: 1是自動截圖2是打測試包
3是Appstore上架
4是自定義,
這裡我是打包企業版本,選擇4,當然所有自定義的包括打企業包、上appstore等都可以自定義指令碼來完成.
初始化完成後專案目錄下會有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:
接下來進入本文的重點,如何編寫構建指令碼 這是具體的指令碼,這個指令碼是打包企業版本: 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你的整個專案,這中間需要一些時間,打包完成後還需要上傳到你們指定的地方去,也是需要時間的,耐心等候.最終:
上面列出了本地打包的耗時458秒.檢視下打包出來的目錄:上傳到fir或者蒲公英這裡筆者暫時是遮蔽掉了.各位需要上傳到fir或者蒲公英,那麼接著往下看:
1.上傳到firim
首先需要安裝firim的工具,cd到你的專案目錄下,這裡的fir以及蒲公英的工具都必須在專案目錄下安裝:
執行fastlane add_plugin firim
這個安裝過程還順帶需要安裝gem,還需要輸入幾次密碼,照著做就行
安裝完成後在fastlane 檔案內加上firim(firim_api_token:"fir的token"),如上圖,這時你需要獲取到你的firim賬號上的token,並填寫進去:
. 最後再次執行打包命令,整個配置沒問題成功後就可以去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的相關資訊都下載下來,如下,自己去對應的資料夾下看詳細內容:
你選擇自定義的時候是不會自動給你生成的,你選擇3上傳到appstore,則是可以自動生成,當然你上架app的第一個版本的資訊初始化可以選擇完全由fastlane來構建,筆者這裡暫時不去探究fastlane中app在itunes上的初始化過程,我個人的建議是自己去itunes上生成app的第一個版本,後續版本的迭代使用fastlane,那樣就只需要關心ipa包的上傳.
終於寫完了,倒騰了一天,整套下來確實是節省了許多打包的時間,心情也好了,開心,學會用好工具也是必修課.