Fastlane:巡航控制上的 iOS 自動化
已發表: 2022-03-11為 iOS 製作軟件不僅僅是編寫 Objective-C 或 Swift 代碼:它包括了解 UIKit 是如何工作的、如何製作證書、如何將你的應用程序發佈到商店、如何處理應用程序評論等等。 如果您發現這個永恆的任務列表很累,那麼您的工作流程中的一些自動化正是您所需要的。
認識 Fastlane,該工具旨在為您在每次部署中節省幾分鐘甚至幾小時。
Fastlane 可幫助您自動化將 beta 構建發送到 Crashlytics、TestFlight、App Store 等的過程。
在本文中,您將了解如何使用 Fastlane 自動化您的 iOS 應用程序部署工作流程。 儘管我們將專注於該工具的 iOS 方面,但 Fastlane 也同樣適用於 Android 開發自動化。
快速通道入門
您可以選擇多種安裝方法,具體取決於您認為最簡單的方法。 如果你安裝並配置了 Homebrew,安裝 Fastlane 只需要一個命令:
brew cask install fastlane 否則,Fastlane 是一個基於 Ruby 的工具, gem始終是一個選項:
sudo gem install fastlane -NV或者,您可以隨時從官方網站下載 Fastlane。
安裝 Fastlane 後,在項目目錄中運行fastlane init並按照說明進行操作。
部署自動化
安裝 Fastlane 後,您現在可以編寫 Ruby 腳本來逐步指示您需要做什麼才能將您的部署部署到您想要的位置。 這是使用動作、工具和通道完成的。
Fastlane 工具、操作和插件
Fastlane 以工具為核心來幫助您構建應用程序。 除了構建工具之外,還有超過 170 個與 Crashlytics、HockeyApp、TestFlight 等服務的內置集成,以及第三方製作和發布的更多插件,以便您可以連接到其他服務等等。
在它的核心,您可以獲得讓您執行各種任務的主要工具:從自動截屏到構圖並將它們上傳到商店,它可以讓您在構建應用程序之前自動運行所有測試。
Actions 是 Fastlane 擁有的核心工具,插件是一種將第三方操作添加到您的 Fastlane 設置的方法。
車道
Fastlane 使用的通道本質上是按順序對一系列操作或插件進行分組,以便您每次都能獲得相同的結果。
在運行一個lane的時候,每個action都會導出一個環境變量,後面的action會自動獲取這些變量來保持流程的進行。 例如,使用gym動作會生成.ipa文件的路徑,使用crashlytics會訪問這個.ipa位置,將這個文件上傳到它的 beta 服務分發系統。
在 iOS 中使用 Fastlane
您從一個想要一個非常簡單的應用程序的新 Toptal 客戶開始。 設計已經完成,應用程序可以在幾週內完成編碼。 下一步是開始編寫代碼,在您的迭代過程中,您將每隔幾周向客戶發送一個測試版應用程序,以便他們可以看到您的進度並就事情的工作情況向您提供反饋。
每次向客戶端發送 beta 版本時,您都將通過一個基本清單:簽署應用程序、將其上傳到 beta 服務、向其添加新版本等。添加您必須做的事情一次(每年):簽署證書、簽署推送通知證書(如果需要)等等。
有了 Fastlane,所有這些現在都可以自動發生!
發送到 Crashlytics Beta
例如,您需要創建簽名證書和配置文件以通過 Crashlytics Beta 共享您的應用程序。
Fastlane 有一個名為match的操作,一旦你設置它,它會執行以下操作:
- 創建分發簽名證書。
- 創建一個臨時配置文件(附加到來自 #1 的證書)。
- 將證書和配置文件從 #1 和 #2 保存到 Git 存儲庫,使用 OpenSSL 加密。
設置很簡單。
首先,運行fastlane match init開始,一旦你設置了 Git 存儲庫,只需調用fastlane match adhoc來獲取臨時配置文件或運行fastlane match appstore來獲取 App Store 證書。
使用match的優點是您可以在計算機之間以及隊友之間非常輕鬆地同步證書,而無需再撤銷證書,並且您獲得了速度。 只需運行fastlane match appstore在幾秒鐘內為您提供證書。
好吧,現在我們有了我們需要的證書和配置,讓我們發佈到 Crashlytics。
將您的應用程序提交到 Fabric 的 Crashlytics 的典型工作流程包括以下步驟:
- 創建分發簽名證書。
- 創建一個臨時配置文件(附加到來自 #1 的證書)。
- 將您的應用設置為使用 #2 中的配置文件。
- 歸檔您的應用程序。
- 打開 Fabric 並按照步驟將應用程序發送給 beta 測試人員。
Fastlane 用這個代替了繁瑣的工作:

platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end 現在,從您的終端運行fastlane beta將啟動此腳本。
這將首先調用match ,這是一個處理創建和更新簽名證書和配置文件的操作,然後調用gym ,這是一個為您構建和打包應用程序的操作,使用之前創建的相同證書和配置文件,最後是crashlytics ,即將獲取此已簽名的.ipa並將其上傳到 Crashlytics 服務。
所有這些步驟總是以相同的順序被調用,從而使生成的文件更可預測並減少錯誤。
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!這是如何運行 Fastlane 以將您的應用程序發送到 Crashlytics 的基本設置。 我們還能自動化什麼?
遞增構建版本
例如,我們可以設置每次發送測試版時,我們要增加構建版本號。
這可以使用一個名為increment_build_number的操作來實現,該操作可以通過fastlane run increment_build_number從終端調用或在我們的 beta 通道中內聯使用:
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end end恭喜! 您現在有一個自動部署腳本,它還會增加您的構建版本號。 唯一需要注意的是,一旦調用此通道,您將在項目中更改文件(或者至少是包含內部版本號的文件)。
如果您打算將更改提交到存儲庫,則有一個操作: commit_version_bump 。 此操作使用新版本號提交文件。
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end這將提交帶有類似“Version Bump to 27”的提交消息的文件。
Crashlytics 到 TestFlight
好吧,如果您做到了這一點,您可以在很短的時間內自動部署到 Crashlytics,從長遠來看,這將為您節省無數小時。 最好的部分是,如果您想將應用程序發送到 TestFlight,您只需將crashlytics更改為pilot 。
或者,您可以為此創建一個單獨的通道:
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end endiOS 自動化變得簡單
Fastlane 簡單易用。 但是,它為您的常規 iOS 開發工作流程帶來了驚人的價值,讓您免於做瑣碎的事情和您最終會浪費的時間。
我希望你會發現這篇關於 Fastlane 的介紹很有用。 您可以查看官方文檔以了解有關 Fastlane 的更多信息,尤其是操作列表,如果您正在尋找可以為當前和下一個 iOS 項目自動化哪些內容的靈感。
