前言:App的開發(fā)過程中,打包測試也是非常重要的一環(huán)馅巷,但是頻繁的機(jī)械式操作反而阻塞我們的開發(fā)測試效率泳唠,我們希望通過自動打包上傳到測試環(huán)境減少一些不必要的簡單操作,所以自動打包開發(fā)工具就應(yīng)運而生了宅广,常見的主流工具有Jenkins、fastlane些举。Jenkins功能強大跟狱,但是需要的配置也比較多,團(tuán)隊較大的可以優(yōu)先考慮,fastlane比較輕便户魏,配置較為簡單驶臊,使用起來也很方便。本文將基于fastlane自動化打包的功能叼丑,詳細(xì)的介紹下fastlane安裝到上傳蒲公英的整個流程关翎。
目錄
<一>. fastlane的安裝
<二>. fastlane的配置
<三>. fastlane打包并上傳至蒲公英和fir.im
<一>. fastlane的安裝
1.筆者配置fastlane的環(huán)境為 macOS Catalina v10.15.6版本。
2.fastlane是用Ruby語言編寫的一套自動化工具集和框架鸠信,fastlane的Github地址纵寝,fastlane的官網(wǎng),fastlane的文檔症副。
3.fastlane的安裝(在終端命令行操作):
--第一步:因為fastlane是用Ruby語言編寫的工具店雅,所以必須保證已經(jīng)配置好了Ruby開發(fā)環(huán)境政基≌晗常可以使用如下命令行查看是否安裝了Ruby:
ruby -v
如果有以下提示說明你已經(jīng)安裝了Ruby:
ruby 2.6.0p0(2018-12-25 revision 66547)[x86_64-darwin19]
如果沒有安裝也沒關(guān)系闹啦,這里提供一個博主的方法。
--第二步:安裝Xcode命令行工具
xcode-select--install
如果沒有安裝辕坝,命令會有提示框窍奋,根據(jù)提示一步一步安裝即可。
如果出現(xiàn)以下命令提示酱畅,說明已經(jīng)安裝成功:
已經(jīng)安裝成功提示
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
--第三步:Ruby和Xcode環(huán)境都配置好之后琳袄,我們只需要執(zhí)行以下命令來安裝fastlane
sudo gem install -n /usr/local/bin fastlane
安裝完成之后,輸入以下命令查看是否安裝成功:
fastlane --version
出現(xiàn)以下提示說明你已經(jīng)安裝成功了:
fastlane安裝成功
如果沒有以上提示也沒關(guān)系纺酸,回看前面的步驟窖逗,再仔細(xì)檢查下,祝君好運餐蔬。
<二>. fastlane的配置
fastlane安裝成功之后碎紊,接下來就是比較重要的fastlane的配置。
<1>首先需要我們cd到你的iOS項目下樊诺,執(zhí)行初始化命令:
fastlane init
命令執(zhí)行完成之后會給出我們?nèi)缦聨讉€提示:
fastlane init
命令執(zhí)行到最后有What would you like to use fastlane for?提示仗考,此時fastlane列出幾個選項,需要我們告訴它使用fastlane需要執(zhí)行哪種操作:
第一種獲取App Store的App預(yù)覽照片词爬。
第二種打包上傳至TestFlight工具上秃嗜。
第三種打包上傳到App Store。
第四種自定義打包方式顿膨。
以上四種方式大家可以根據(jù)自己的需要自行選擇锅锨,本文主要介紹打包上傳至第三方平臺,所以選擇4自定義打包方式恋沃。選擇完成之后橡类,fastlane會在我們項目中創(chuàng)建fastlane文件,這個過程大概需要兩分鐘等待芽唇。
出現(xiàn)以下截圖說明已經(jīng)創(chuàng)建成功:
此時只需要我們一直敲回車鍵即可顾画,直到該命令運行結(jié)束,我們會看到如下創(chuàng)建的文件:
<2>創(chuàng)建好fastlane文件夾之后匆笤,Appfile是編輯我們相關(guān)App和開發(fā)者賬號信息的研侣,一般不需要我們?nèi)ナ謩有薷模谧詈笠徊降拇虬^程中如果出現(xiàn)需要App ID的相關(guān)信息炮捧,我們在命令行中正常輸入即可庶诡。Fastfile是我們對自動打包這個過程的完整配置,默認(rèn)的Fastfile文件內(nèi)容如下:
1.主要介紹lane的任務(wù)結(jié)構(gòu)和蒲公英咆课、fir.im的api配置末誓。
筆者給出一個自己的例子來作為參考并講解主要參數(shù)的含義:
關(guān)于上述的蒲公英api_key和user_key可以到蒲公英Api網(wǎng)站查看:
截屏2020-10-23 下午5.14.55.png
關(guān)于fir.im的相關(guān)信息可以到fir.imApi網(wǎng)站查看:
FIR_API
build_app 中主要是編譯打包成ipa文件這個過程的相關(guān)操作扯俱,build_app中的相關(guān)參數(shù)介紹:
參數(shù)參數(shù)的意義默認(rèn)值
workspaceiOS項目的workspace
project工程路徑
schemeiOS項目的scheme
cleanfastlane自動打包之前知否clean項目false
output_directory編譯App完成后ipa包的存放地址,默認(rèn)在工程中.
output_nameipa包名稱
silent編譯過程中隱藏掉不必要的信息false
codesigning_identity描述文件
skip_package_ipa自動跳過ipa打包false
skip_package_pkg自動跳過pkg打包false
include_symbolsipa包包含symbols喇澡?
include_bitcodeipa包包含symbolsbitcode?
export_method打包導(dǎo)出方式: app-store, ad-hoc, package, enterprise, development, developer-id
export_options需要一個export_options plist 文件路徑或者export_options 迅栅,用 'xcodebuild -help' 查看提供的 options
skip_build_archiveExport ipa from previously built xcarchive. Uses archive_path as source
skip_archive跳過打archive包過程
skip_codesigningBuild without codesigning
catalyst_platformcatalyst app的打包平臺: ios, macos
build_pathThe directory in which the archive should be stored in
archive_pathThe path to the created archive
sdk應(yīng)用支持的手機(jī)系統(tǒng)版本
套用fastlane官方的配置例子:
build_app(? workspace: "MyApp.xcworkspace",? configuration: "Debug",? scheme: "MyApp",? silent: true,? clean: true,? output_directory: "path/to/dir", # Destination directory. Defaults to current directory.? output_name: "my-app.ipa",? ? ? # specify the name of the .ipa file to generate (including file extension)? sdk: "iOS 11.1"? ? ? ? # use SDK as the name or path of the base SDK when building the project.)
gym 中主要是編譯打包成功后,對導(dǎo)出的IPA包的操作晴玖,gym中的相關(guān)參數(shù)可參考build_app中的參數(shù)读存,因為兩者的參數(shù)基本一致,最后用一個gym例子:
platform:iOSdodesc"打測試包上傳到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")gym(workspace:"MyApp.xcworkspace",configuration:"Debug",scheme:"MyApp",silent:true,clean:true,output_directory:"path/to/dir",# Destination directory. Defaults to current directory.output_name:"my-app.ipa",# specify the name of the .ipa file to? ? ? ? generate (including file extension)sdk:"iOS 11.1"# use SDK as the name or path of the base SDK when building the project.)endend
4 蒲公英和fir.im的插件配置
經(jīng)過上面的相關(guān)配置呕屎,我們的配置就差一步:第三方平臺的插件配置让簿。
@1.蒲公英插件的配置:
執(zhí)行以下命令來安裝蒲公英插件:
fastlane add_plugin pgyer
出現(xiàn)以下結(jié)果表明安裝成功:
@2.fir.im插件的配置:
執(zhí)行以下命令來安裝fir.im插件:
fastlane add_plugin firim
出現(xiàn)以下結(jié)果表明安裝成功:
<三>. fastlane打包并上傳至蒲公英和fir.im
經(jīng)過上面的配置,我們就可以愉快的自動打包上傳啦秀睛,不過最后還有幾點跟大家說明一下尔当,首先貼出來筆者打包的配置文件:
platform:iOSdodesc"打測試包上傳到蒲公英"lane:pgydobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA")#蒲公英的配置 替換為自己的api_key和user_keypgyer(api_key:"蒲公英api_key",user_key:"蒲公英user_key",update_description:"該版本更新的內(nèi)容")enddesc"打測試包上傳到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")# 上傳ipa到fir.im服務(wù)器,在fir.im獲取firim_api_tokenfirim(firim_api_token:"firim_api_token")# token 在fir 上查看endend
首先lane作為一個單獨的任務(wù)模塊蹂安,它是可以自己定義的椭迎,例如筆者的例子中platform為iOS,下面有兩個任務(wù):pgy和fir,所以在我們只需要cd 到相關(guān)的iOS項目下執(zhí)行以下命理即可:
(打包上傳至fir.im? ios為platform字段中的平臺? fir為自己自定義的任務(wù) 當(dāng)然這個名字可以任意取,在我們執(zhí)行命令的時候?qū)?yīng)上即可藤抡。)
fastlane ios fir
或者
fastlane ios pgy
出現(xiàn)下面的截圖就代表你已經(jīng)上傳成功了:
附錄:
<1> firim相關(guān)參數(shù)配置
參數(shù)參數(shù)的意義默認(rèn)值
platform平臺:ios , mac, android---
firim_api_urlhttps://www.betaqr.com/apps---
firim_api_tokenfirim網(wǎng)站的API token---
app_changelog更新日志---
firim_username用戶名---
app_passwd安裝密碼---
ipaipa包---
apkapk包---
gradle_file------
icon------
file------
app_identifier------
app_name------
app_desc------
app_short------
app_is_opened------
app_is_show_plaza------
app_store_link_visible------
app_version------
app_build_version------
app_release_type------
app_info_to_file_path------
<2> 蒲公英相關(guān)參數(shù)配置
參數(shù)參數(shù)的意義默認(rèn)值
api_keyhttps://www.pgyer.com/account/api---
user_keyhttps://www.pgyer.com/account/api---
ipaipa包---
apkapk包---
password安裝包密碼---
update_description更新日志---
install_type------
寫在最后:fastlane的本地打包主題感受是相比之前手工操作省去了不少機(jī)械操作,筆者80M左右的項目上傳成功大概用了9分左右缠黍,還是挺有效率的弄兜。當(dāng)然這也只是開發(fā)測試中的一環(huán),弊端就是必須要本地配置好才可以瓷式,關(guān)于后續(xù)的服務(wù)器自動化打包測試會繼續(xù)更新替饿,感謝大家的拜讀,如果文中有錯誤或者理解不對的地方贸典,歡迎大家的批評指正视卢。
作者:coderGMQ111的筆記
鏈接:http://www.reibang.com/p/81b78c53d171
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)廊驼,非商業(yè)轉(zhuǎn)載請注明出處据过。