使用初衷
公司産品版本比較多,很多版本都需要獨立化部署。導緻産生了每個位址需要打包,每次打包就是一件麻煩的事情,常常一下午的時間過去了卻都浪費在打包這件事情上了。So….研究了下Fastlane。爬了很多坑。寫出來讓大家參考下,遇到問題了可以私信我。盡我所能幫助你。
基礎名詞
- Ruby,一種簡單快捷的面向對象(面向對象程式設計)腳本語言
- RVM是一個指令行工具,它允許您輕松地安裝,管理和使用從解釋器到多組gems多個ruby環境。
- Gems RubyGems簡稱gems,是一個用于對 Ruby元件進行打包的 Ruby 打包系統。例如經常用的cocoapods就需要 gem 來管理。
- Fastlane是Felix Krause大神寫的fastlane是一套使用Ruby寫的自動化工具集,用于iOS和Android的自動化打包、釋出等工作。
- pgyer/fir 第三方釋出測試平台。
Fastlane 安裝初始化
- 確定你已經安裝了最新版本的Xcode指令行工具:
- 選擇你的安裝方法:推薦使用RubyGems 安裝【不出問題就直接進行,最後指出問題點】
方法 | os支援 | 描述 |
---|---|---|
Homebrew | 蘋果系統 | brew cask install fastlane |
安裝程式腳本 | 蘋果系統 | 下載下傳zip檔案。然後輕按兩下install腳本(或在終端視窗中運作)。 |
RubyGems | 帶有Ruby 2.0.0或更高版本的macOS或Linux | sudo gem install fastlane -NV |
- 初始化
安裝完畢後,在終端進入到你的項目目錄下。初始化fastlane
fastlane init
按照提示輸入開發者賬号(付費賬号) 輸入Bundle Identifier 用于初始化配置,後期可在配置檔案改。随便輸入
根據提供的資訊,fastlane會自動為您生成一個配置。\
您可以看到新建立的./fastlane目錄,包含Appfile和Fastfile檔案。
最有趣的檔案是fastlane/Fastfile,其中包含分發您的應用程式所需的所有資訊。\
這樣就完成了初始化
蒲公英插件安裝
初始化完畢後直接在終端輸入
//fastlane fastlane search_plugins//列出可用插件
fastlane add_plugin pgyer//安裝插件
插件安裝成功\
./fastlane目錄下會生成Pluginfile的一個檔案。\
插件安裝不成功,就是fastlane安裝的有問題。
配置Fastlane
檔案名 | 描述 |
---|---|
Appfile | 從 Apple Developer Portal 擷取和項目相關的資訊 詳情 |
Fastfile | 核心檔案,存放lane任務 |
Deliverfile | deliver的配置檔案,從 iTunes Connect 擷取和項目相關的資訊詳細 |
metadata | 同步iTC中的中繼資料 |
screenshots | 同步iTC中的截圖 |
- #### fastlane工具集是配置fastlane最重要的
檔案名 | 描述 |
---|---|
match | 證書和配置檔案管理工具會重置證書,推薦新項目使用。���������� |
cert | 自動建立管理iOS代碼簽名證書,會去自動建立證書,永遠不會撤銷現有的證書。如不能建立會報錯。 |
sigh | 用來建立、更新、下載下傳、修複Provisioning Profile的工具 |
gym | 自動化編譯打包工具.shenzhen的代替品.���������� |
pem | 自動生成、更新推送配置檔案 |
produce | 如果你的産品還沒在iTunes Connect(iTC)或者Apple Developer Center(ADC)建立,produce可以自動幫你完成這些工作 |
deliver | 自動上傳截圖,APP的中繼資料,二進制(ipa)檔案到iTunes Connect |
snapshot | 自動截圖(基于Xcode7的UI test) |
frameit | 可以把截的圖檔自動套上一層外邊框 |
pilot | 管理TestFlight的測試使用者,上傳二進制檔案 |
boarding | 建立一個添加測試使用者界面,發給測試者,可自行添加郵件位址,并同步到iTunes Connect(iTC) |
scan | 自動運作測試工具,并且可以生成漂亮的HTML報告 |
spaceship | 為pilot,boarding和deliver等工具提供和 iTC 和 ADC 的互動API。spaceship本來是個獨立的項目,後來被Fastlane收編進來 |
WatchBuild | 是一個獨立的iTC監控工具,開啟WatchBuild可以監控iTC上的檔案狀态,彈出MacOS自帶的Notification |
supply | Android自動上傳到Google Play工具(如果有時間,我想把國内提供API的Android Store都寫個插件自動上傳,這個問題從10年我剛開始工作就覺得是個痛點) |
screengrab | Android的自動截圖工具 |
關于fastfile:
- 裡面存放了很多lane,每個lane相當于按順序執行的工作流。每個lane可以存放多個action,action可以看做具體的執行動作
- 生命周期
執行順序 | 方法名 | 說明 |
---|---|---|
1 | before_all | 在執行 lane 之前隻執行一次 |
2 | before_each | 每次執行 lane 之前都會執行一次 |
3 | lane | 自定義的任務 |
4 | after_each | 每次執行 lane 之後都會執行一次 |
5 | after_all | 在執行 lane 成功結束之後執行一次 |
6 | error | 在執行上述情況任意環境報錯都會中止并執行一次 |
- 任務定義
定義 | 是否必須 | 說明 | 備注 |
---|---|---|---|
desc | false | 方法描述 | 可多次使用打到換行的目的 |
name | true | 方法名 | 符号化的方法名 |
options | false | 方法參數 | 傳回 Hash 類型 |
task | true | 方法主體 | 參考 ruby 的方法代碼且支援 ruby 代碼 |
- 一個簡單的lane
lane :deploy do
# 執行 pod instasll
cocoapods
# 執行 carthage bootstrap
carthage
# 增加build版本号
increment_build_number
# 編譯代碼
gym
# 釋出到Apple Store
deliver(force: true)
end
- fastlane示例
- 這個是我自己 配置到蒲公英的。同時導出ipa到./build檔案夾下,以版本号和打包時間命名。這樣就保留了每一版本包了。
隻需要項目根目錄下執行即可
fastlane topgyer desc:更新内容
desc "上傳到測試版本到蒲公英"
desc "生成本地版本"
lane :topgyer do|option|
#自動增加build
# increment_build_number
#自動生成證書
cert
#自動生成配置檔案
# sigh(force: true)//我使用的是手動配置關閉這個。如需自動則打開即可
#gym配置,打包輸出。
#fastlane gym --export_method ad-hoc
#fastlane gym --export_method enterprise
#fastlane gym --export_method app-store
scheme_name = "xxxx"//應用名詞
#擷取version和build版本号
version = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleShortVersionString")
build = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleVersion")
#導出路徑
output_directory = "./build"
#導出名稱
output_name = "#{scheme_name}_#{version}_#{build}_#{option[:desc]}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa"
gym(
export_method: "enterprise",//企業賬号
scheme: scheme_name, //名詞
clean: true,//是否清理上次編譯
output_directory: output_directory,//導出路徑
output_name: output_name//導出名詞
)
pgyer(api_key: "1212121", user_key: "121212", update_description: "#{option[:desc]}")//蒲公英設定檢視key
end
-
手動配置證書。 fastlane初始化Gym fastlane gym會生成一個Gymfile的檔案。增加下面代碼,同時不要使用自動生成配置檔案\
sigh(force: true)
export_options(
provisioningProfiles: {
"com.xxx.xxx" => "profilesName",
"com.xxx.xxxxxx" => "profilesName1"
})
-
scheme 設定
沒有在gym或者fastfile寫應用的名字的話。打包的時候會自動檢測目前目錄下的檔案。列出來供你選擇。\
也可以設定一下在gym中直接指派,或者fastfile中增加即可。
問題彙總
使用過程中出現了很多問題,大部分問題都已經有人躺過水了,是以有問題先去看看issues
問題 | 解決方案 |
---|---|
ruby -v 版本低于2.0.0 | gem版本不對 請更新ruby請更新gems |
cocoapods沒有放到Gemfile中 | Gemfile檔案中增加cocoapods |
fastlane init 提示sudo | 請檢查ruby路徑。如果沒問題請檢查user目錄下.bash_profile。環境變量設定是否有效。export PATH=” HOME/.fastlane/bin: PATH” |
如果初始化成功 | 其他的問題大部分都是證書問題了。 |
如需轉載請備注簡書位址
http://www.jianshu.com/u/bee103cd1f97
不懂的可以Q719251357
參考
https://whlsxl.github.io/fastlane1/