簡介
是用Ruby語言編寫的一套自動化工具集和框架,每一個工具實際都對應一個Ruby腳本,用來執(zhí)行某一個特定的任務,而fastlane核心框架則允許使用者通過類似配置文件的形式,將不同的工具有機而靈活的結合在一起,從而形成一個個完整的自動化流程。比如我需要完成一套發(fā)布流程:
#發(fā)布到AppStore
lane :release do
#增加build版本號,需要先配置build setting
increment_build_number
#pod資源更新
cocoapods
#打包
gym
#發(fā)布到AppStore
deliver(force: true)
#發(fā)布testflight測試
testflight
end
準備工作
- 首先確認是否安裝了ruby,終端查看下ruby版本
> ruby -v
- 確認是否安裝了Xcode命令行工具
> xcode-select --install
安裝步驟
- 如果用的是mac自帶的ruby,需要 sudo權限
> sudo gem install fastlane
- 如果報錯:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/commander
> sudo gem install -n /usr/local/bin fastlane
初始化
在項目根目錄下,初始化Fastlane:
fastlane init//初始化配置文件,會在fastlane文件夾看到以下兩個文件
Appfile //配置工程AppID和AppleID(開發(fā)者賬號)
Fastfile //管理工程的lane的各個action,可以看成設置的任務流程
新版本安裝的時候出現(xiàn)了下面的分支選擇,按要求選擇就行
1. ?? Automate screenshots
2. ????? Automate beta distribution to TestFlight (自動testfilght型配置)
3. ?? Automate App Store distribution (自動發(fā)布型配置)
4. ?? Manual setup - manually setup your project to automate your (需要手動配置內容)
配置文件
- Appfile: 存儲有關開發(fā)者賬號相關信息
- Fastfile: 核心文件,主要用于 命令行調用和處理具體的流程,lane相對于一個方法或者函數(shù)
- Deliverfile: deliver工具的配置文件
- metadata: 元數(shù)據(jù)文件夾
- Matchfile: Match操作對應的配置文件
- screenshots: 截圖文件夾
除開手動配置項,fastlane 會要求填寫Apple ID,選擇你的Team(如果有多個) 然后fastlane會自動檢測當前目錄下項目的App Name和App Identifier、Project。然后自行確認并按流程執(zhí)行。
常用命令
- fastlane actions: 展示所有有效action列表
- fastlane action [action_name]: 展示一個action的詳細說明,使用方法等
- fastlane lanes: 展示fastfile中的所有l(wèi)ane
- fastlane list: 展示fastfile中的所有的有效的lane
- fastlane new_action: 創(chuàng)建一個新的action
- fastlane env: 打印fastlane、ruby環(huán)境,一般提bug到issue的時候會要求提供
生命周期

生命周期
自動上傳至fir或者蒲公英
- 執(zhí)行如下命令安裝fir插件:
sudo fastlane add_plugin firim
- 自動上傳到fir還需執(zhí)行如下命令:
sudo gem install -n /usr/local/bin fir-cli
- 如果是蒲公英平臺,安裝如下插件:
fastlane add_plugin pgyer
報錯如下
Plugin 'pgyer' was not properly loaded, make sure to follow the plugin docs
解決辦法
sudo gem install -n /usr/local/bin bundler
bundle install
sudo fastlane -n /usr/local/bin add_plugin pgyer
實例
module Fastlane
module Actions
module SharedValues
POD_INSTALL_CUSTOM_VALUE = :POD_INSTALL_CUSTOM_VALUE
end
class PodInstallAction < Action
def self.run(params)
repo = "-no-repo-update"
command = []
command << "pod install"
if params[:repo_update]
repo = "--repo-update"
end
command << repo
if params[:verbose]
command << "--verbose"
end
result = Actions.sh(command.join(' '))
UI.success(command.join(' ') + " Successfully ")
return result
end
def self.description
"pod install action"
end
def self.details
"verbose / repo-update"
end
def self.available_options
[
FastlaneCore::ConfigItem.new(key: :verbose,
description: "Allow output detail in console",
optional: true,
is_string: false,
default_value: false),
FastlaneCore::ConfigItem.new(key: :repo_update,
description: "Allow output detail in console",
optional: true,
is_string: false,
default_value: false)
]
end
def self.output
end
def self.return_value
end
def self.authors
["yang"]
end
def self.is_supported?(platform)
platform == :ios
end
end
end
end
使用
- 打開終端cd 到項目根目錄執(zhí)行以下代碼
fastlane beta
打包成功標志

成功標志

Succeed~
補充
- 如果Deliverfile、screenshots和metadata沒有自動生成,通過deliver init 可以重新初始化
- fastlane的配置會要求輸入開發(fā)者賬號密碼,通過spaceship與Apple交互,并會產生一份有效期一個月的cookies文件:文件地址: ~/.fastlane/spaceship/[email]/cookie (兩步驗證問題)
- Matchfile: match 這個action的配置文件,fastlane match init 自動生成,存放git地址等