簡介:Fastlane是一套使用Ruby寫的自動化工具集,旨在簡化Android和iOS的部署過程,自動化你的工作流。它可以簡化一些乏味、單調、重複的工作,像截圖、代碼簽名以及發佈App。因爲涉及到公司賬號和子賬號權限問題,因爲有時候公司在給開發者設置子賬號權限時,不想給管理員賬號,只會給開發者賬號,所以要在這種情況下還得自己完成上架,就需要使用這種腳本比較好,因爲只需要輸入一次公司agent賬號和密碼就可以實現。
所需材料:P12證書雙擊安裝,蘋果發佈證書雙擊安裝,並在工程中配置好這兩個文件。
實現過程
一、安裝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是我們最應該關注的文件,也是我們的工作文件。
爲了使其結構更整齊,這裏我們將其內容修改爲如下內容,這樣生成的ipa包就會保存在build文件夾下,XXApp_iOS要更換爲自己的項目名稱:
default_platform(:ios)
platform :ios do
# desc "Push a new release build to the App Store"
# lane :release do
# build_app(workspace: "XXApp_iOS.xcworkspace", scheme: "XXApp_iOS")
# upload_to_app_store
# end
desc "打包XXX”
lane :XXApp_iOS do |options|
gym(
clean:true, #打包前clean項目
export_method: "app-store", #導出方式
workspace:”XXApp_iOS.xcworkspace",
scheme:”XXApp_iOS”, #scheme
configuration: "Release",#環境
output_directory:"./build",#ipa的存放目錄
output_name:”XXX”#get_build_number()#輸出ipa的文件名爲當前的build號
)
end
end
在工作目錄的終端執行
fastlane
然後等待就好了,直到完成就可以看到多了一個ipa文件。這時候選中xcode,根據目錄xcode->open developer tool->Application Loader,根據提示上傳ipa即可。
其他的一些小提示
可以在before_all中做一些前置操作,比如進行build號的更新,我個人建議不要對Version進行自動修改,可以作爲參數傳遞進來。
如果ipa包存放的文件夾爲工作區,記得在.gitignore中進行忽略處理,我建議把fastlane文件也進行忽略,否則回退版本打包時缺失文件還需要手動打包。
如果你的Apple ID在登錄時進行了驗證碼驗證,那麼需要設置一個專業密碼供fastlane上傳使用,否則是上傳不上去的。
如果你們的應用截圖和Metadata信息是運營人員負責編輯和維護的,那麼在打包到AppStore時,記得要忽略截圖和元數據,否則有可能因爲不一致而導致覆蓋。
skip_metadata:true, #不上傳元數據
skip_screenshots:true,#不上傳屏幕截圖
關於fastlane的一些想法
其實對於很多小團隊來說,fastlane就可以簡化很多操作,提升一些效率,但是還不夠極致,因爲我們沒有打通Git環節,測試環節,反饋環節等,fastlane只是處於開發中的一環。許多團隊在進行Jenkins或是其他的CI的嘗試來摸索適合自己的工作流。但是也不要盲目跟風,從需求出發切合實際就好,找到痛點才能找到止痛藥!