iOS--fastlane自動化打包

前言: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)載請注明出處据过。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妒挎,隨后出現(xiàn)的幾起案子绳锅,更是在濱河造成了極大的恐慌,老刑警劉巖酝掩,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳞芙,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)原朝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門驯嘱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喳坠,你說我怎么就攤上這事鞠评。” “怎么了丙笋?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵谢澈,是天一觀的道長煌贴。 經(jīng)常有香客問我御板,道長,這世上最難降的妖魔是什么牛郑? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任怠肋,我火速辦了婚禮,結(jié)果婚禮上淹朋,老公的妹妹穿的比我還像新娘笙各。我一直安慰自己,他們只是感情好础芍,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布杈抢。 她就那樣靜靜地躺著,像睡著了一般仑性。 火紅的嫁衣襯著肌膚如雪惶楼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天诊杆,我揣著相機(jī)與錄音歼捐,去河邊找鬼。 笑死晨汹,一個胖子當(dāng)著我的面吹牛豹储,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淘这,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼剥扣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铝穷?” 一聲冷哼從身側(cè)響起钠怯,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氧骤,沒想到半個月后呻疹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年刽锤,在試婚紗的時候發(fā)現(xiàn)自己被綠了镊尺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡并思,死狀恐怖庐氮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宋彼,我是刑警寧澤弄砍,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站输涕,受9級特大地震影響音婶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜莱坎,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一衣式、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧檐什,春花似錦碴卧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓮具,卻和暖如春荧飞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搭综。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工垢箕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兑巾。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓条获,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒋歌。 傳聞我的和親對象是個殘疾皇子帅掘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361