開篇
回想一下我們釋出應用,要進行多少步操作。一旦其中一步失誤了,又得重新來。這完完全全不是我們工程師的風格。在軟體工程裡面,我們一直都推崇把重複、流程化的工作交給程式完成,像這種浪費人生的工作,實在是不應該浪費我們的人生。這次的文章主角就是為了解放我們而來—— fastlane
。這個明星庫在 github
已經高達 1w 多的start量。
Fastlane
fastlane 是 iOS (還有 Android ) 佈署和釋出最好的一套工具。它處理了所有重複的工作,例如生成截圖,處理簽名和釋出應用。
安裝
fastlane實際是由Ruby寫的,使用Ruby的Gem安裝是我們的不二選擇
sudo gem install fastlane -NV
複製程式碼
接著在終端進入專案裡面(目前fastlane swift 正在測試,就以之前的版本講解)
fastlane init
複製程式碼
按照提示初始化完成之後,在專案下面生成 fastlane 資料夾
基本介紹
先普及兩個重要的檔案,初始化後在./fastlane
檔案件即可找到
Appfile
存放著 AppleID 或者 BundleID 等一些fastlane需要用到的資訊。基本上我們不需要改動這個檔案的內容。
它放到你專案下面的 ./fastlane
資料夾下面,預設生成的檔案如下:
app_identifier "net.sunapps.1" # The bundle identifier of your app
apple_id "felix@krausefx.com" # Your Apple email address
# 如果賬號裡面有多個team,可以指定所有的team
# team_name "Felix Krause"
# team_id "Q2CBPJ58CA"
# 指定 App Store Connect 使用的team
# itc_team_name "Company Name"
# itc_team_id "18742801"
複製程式碼
更多詳細的配置,可以參考一下文件 Appfile Doc
FastFile
一開始生成的Fastlane
檔案大概如下:
platform :ios do
before_all do
end
desc "Runs all the tests"
lane :test do
scan
end
# You can define as many lanes as you want
after_all do |lane|
end
error do |lane, exception|
# slack(
# message: "Error message"
# )
end
end
複製程式碼
Fastfile
裡面包含的塊型別有四種:
before_all
用於執行任務之前的操作,比如使用cocopods
更新pod庫after_all
用於執行任務之後的操作,比如傳送郵件,通知之前的error
用於發生錯誤的操作lane
定義使用者的主要任務流程。例如打包ipa
,執行測試等等
如下面,來講解一下lane的組成。
desc "Push a new beta build to TestFlight" //該任務的描述
lane :beta do //定義名字為 beta 的任務
build_app(workspace: "expample.xcworkspace", scheme: "example") //構建App,又叫gym
upload_to_testflight //上傳到testfilght,
end
複製程式碼
該任務的作用就是構建應用並上傳到 TestFilght。下面有兩個 Action
build_app
生成 ipa 檔案upload_to_testflight
把 ipa 檔案上傳到 TestFilght
在控制檯進入專案所在的資料夾下面,執行下面命令
fastlane beta
複製程式碼
即可執行任務,按照上面的任務,會生成 ipa 並上傳到 TestFilght。其實很簡單,定義好任務,控制檯執行任務即可。
實踐
那麼如何寫一個我們屬於自己的 lane 呢? 就以釋出 ipa 到 fir 為例
desc "釋出到Fir"
lane :pulish_to_fir do
# 執行 pod install
cocoapods
# 構建和打包ipa
gym(
clean: true,
output_directory: './firim',
scheme: 'xxxx',
configuration: 'Test',
export_options: {
method: 'development',
provisioningProfiles: {
"xxx.xxx.xxx": "match Development xxx.xxx.xxx"
},
}
)
# 上傳ipa到fir.im伺服器,在fir.im獲取firim_api_token
firim(firim_api_token: "fir_token")
end
複製程式碼
下面解釋一下上面的內容
cocoapods
複製程式碼
在專案裡執行 pod install
,詳細例子可見 Doc
sh "./update_version.sh"
複製程式碼
這是由作者本地寫的更新版本號的指令碼
gym (又名build_app)
複製程式碼
gym
是fastlane的裡面一部分,它可以方便生成和簽名ipa,能為開發者省下不少功夫。
firim
複製程式碼
firim
是一個外掛,執行 fastlane add_plugin firim
即可把外掛裝好
總結
fastlane裡面內建很多常用的Action,具體的使用方法建議多看一下官方文件。
fastlane專案裡面也有很多其他公司的 例子,在不清楚怎麼使用的時候,看看這些例子也未嘗不是一種方法。