作者:mirrorzyb
連結:https://www.jianshu.com/p/5d836e89d9d1
Fastlane是一套使用Ruby寫的自動化工具集,旨在簡化Android和iOS的部署過程,自動化你的工作流。它可以簡化一些乏味、單調、重覆的工作,像截圖、程式碼簽名以及釋出App。
Github:https://github.com/fastlane/fastlane
官網:https://fastlane.tools/
檔案:https://docs.fastlane.tools/
我認為我們在選擇一些三方開源庫或是工具的前提是:可以滿足我們當下的需求並且提供好的擴充套件性, 無疑對我而言Fastlane做到了。我當前專案的需求主要是下麵幾方面:
-
一行命令實現打包工作,不需要時時等待操作下一步,節省打包的時間去做其他的事。
-
避免頻繁修改配置導致可能出現的Release/Debug環境錯誤,如果沒有檢查機制,那將是災難,即使有檢查機制,我們也不得不重新打包,浪費了一次打包時間。畢竟人始終沒有程式可靠,可以告別便利貼了。
-
透過配置自動上傳到蒲公英,fir.im內測平臺進行測試分發,也可以直接上傳到TestFlight,iTunes Connect。
-
證書的同步更新,管理,在新電腦能夠迅速具備專案打包環境。
如果你也有上述需求,那我相信Fastlane是一個好的選擇。
那既然說Fastlane是一套工具的集合,那認識並瞭解其中的工具的作用是必不可少的環節。按照功能屬性Fastlane對工具進行瞭如下分類(連結至官網詳細介紹):
-
Testing 測試相關
-
Building 打包
-
Screenshots 截圖
-
Project 專案配置
-
Code Signing 程式碼簽名
-
Documentation 檔案
-
Beta 內測相關
-
Push 推送
-
Releasing your app 釋出
-
Source Control Git工作流
-
Notifications 通知相關
-
Misc 其他的雜七雜八
分類下對應的就是具體的每一個工具的介紹,在這裡每一個工具Fastlane叫做action,下文我們也統一叫action。這裡我會列舉一些我認為常用的action,其他的大家可以去官網看下
-
gym:是fastlane提供的打包工具。
-
snapshot: 生成多個裝置的截圖檔案
-
frameit :對截圖加一層物理邊框
-
increment_build_number:自增build number 然後與之對應的get_build_number。Version number同理。
-
cert:建立一個新的程式碼簽名證書
-
sigh:生成一個provisioning profile並儲存打當前檔案
-
pem:確保當前的推送證書是活躍的,如果沒有會幫你生成一個新的
-
match:在團隊中同步證書和描述檔案。(這是一種管理證書的全新方式,需要重點關註下)
-
testflight:上傳ipa到testflight
-
deliver:上傳ipa到AppStore
當然官網裡面其實是有很多可以劃等號的Action,大家在看的時候註意下。Actions官閘道器於Action的介紹
多說無益,開始上手
當前最新版本是2.8.4
一、安裝xcode命令列工具
xcode-select –install,如果沒有安裝,會彈出對話方塊,點選安裝。如果提示xcode-select: error: command line tools are already installed, use “Software Update” to install updates表示已經安裝
二、安裝Fastlane
sudo gem install fastlane -NV或是brew cask install fastlane我這裡使用gem安裝的
安裝完了執行fastlane –version,確認下是否安裝完成和當前使用的版本號。
三、初始化Fastlane
cd到你的專案目錄執行
fastlane init
這裡會彈出四個選項,問你想要用Fastlane做什麼? 之前的老版本是不用選擇的。選幾都行,後續我們自行根據需求完善就可以,這裡我選的是3。
如果你的工程是用cocoapods的那麼可能會提示讓你勾選工程的Scheme,步驟就是開啟你的xcode,點選Manage Schemes,在一堆三方庫中找到你的專案Scheme,在後面的多選框中進行勾選,然後rm -rf fastlane檔案夾,重新fastlane init一下就不會報錯了。
接著會提示你輸入開發者賬號和密碼。
[20:48:55]: Please enter your Apple ID developer credentials
[20:48:55]: Apple ID Username:
登入成功後會提示你是否需要下載你的App的metadata。點y等待就可以。
如果報其他錯的話,一般會帶有github的相似的Issues的連結,裡面一般都會有解決方案。
四、檔案系統
初始化成功後會在當前工程目錄生成一個fastlane檔案夾,檔案目錄為下。
其中metadata和screenshots分別對應App元資料和商店應用截圖。
Appfile主要存放App的apple_id team_id app_identifier等資訊
Deliverfile中為釋出的配置資訊,一般情況用不到。
Fastfile是我們最應該關註的檔案,也是我們的工作檔案。
Fastfile
之前我們瞭解了action,那action的組合就是一個lane,打包到蒲公英是一個lane,打包到應用商店是一個lane,打包到testflight也是一個lane。可能理解為任務會好一些。
打包到蒲公英
這裡以打包上傳到蒲公英為例子,實現我們的一行命令自動打包。
蒲公英在Fastlane是作為一個外掛存在的,所以要打包到蒲公英必須先安裝蒲公英的外掛。
開啟終端輸入fastlane add_plugin pgyer
更多資訊檢視蒲公英檔案
新建一個lane
desc "打包到pgy"
lane :test do |options|
gym(
clean:true, #打包前clean專案
export_method: "ad-hoc", #匯出方式
scheme:"shangshaban", #scheme
configuration: "Debug",#環境
output_directory:"./app",#ipa的存放目錄
output_name:get_build_number()#輸出ipa的檔案名為當前的build號
)
#蒲公英的配置 替換為自己的api_key和user_key
pgyer(api_key: "xxxxxxx", user_key: "xxxxxx",update_description: options[:desc])
end
這樣一個打包到蒲公英的lane就完成了。
option用於接收我們的外部引數,這裡可以傳入當前build的描述資訊到蒲公英平臺
執行
在工作目錄的終端執行
fastlane test desc:測試打包
然後等待就好了,打包成功後如果蒲公英系結了微信或是郵箱手機號,會給你發通知的,當然如果是單純的打包或是打包到其他平臺, 你也可以使用fastlane的notification的action集進行自定義配置。
其他的一些配置大家可以自己組合摸索一下,這樣會讓你對它更為瞭解。
match
開頭已經說了,match是一種全新的證書同步管理機制,也是我認為在fastlane中相對重要的一環,介於篇幅這篇就不細說了,有興趣的可以去官網看下,有機會我也會更新一篇關於match的文章。match
其他的一些小提示
1、可以在before_all中做一些前置操作,比如進行build號的更新,我個人建議不要對Version進行自動修改,可以作為引數傳遞進來。
2、如果ipa包存放的檔案夾為工作區,記得在.gitignore中進行忽略處理,我建議把fastlane檔案也進行忽略,否則回退版本打包時缺失檔案還需要手動打包。
3、如果你的Apple ID在登入時進行了驗證碼驗證,那麼需要設定一個專業密碼供fastlane上傳使用,否則是上傳不上去的。
4、如果你們的應用截圖和Metadata資訊是運營人員負責編輯和維護的,那麼在打包到AppStore時,記得要忽略截圖和元資料,否則有可能因為不一致而導致改寫。skip_metadata:true, #不上傳元資料 skip_screenshots:true,#不上傳螢幕截圖
關於fastlane的一些想法
其實對於很多小團隊來說,fastlane就可以簡化很多操作,提升一些效率,但是還不夠極致,因為我們沒有打通Git環節,測試環節,反饋環節等,fastlane只是處於開發中的一環。許多團隊在進行Jenkins或是其他的CI的嘗試來摸索適合自己的工作流。但是也不要盲目跟風,從需求出發切合實際就好,找到痛點才能找到止痛藥!
●編號297,輸入編號直達本文
●輸入m獲取文章目錄
Web開發
更多推薦《18個技術類微信公眾號》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。