Fastlane(一):用法

fastlane是一個自動化構(gòu)建工具年柠,主要包含測試、打包褪迟、發(fā)布等功能冗恨,它內(nèi)部是由ruby實現(xiàn)的,是一款自動化非常高的腳本工具味赃。

1. 常規(guī)使用

使用fastlane并不復(fù)雜掀抹,多數(shù)情況下,只需要一個命令和一個Fastfile配置文件心俗,就能使用fastlane去實現(xiàn)一些功能傲武,比如簽名、測試另凌、打包等
下面是一個Fastfile文件中的代碼谱轨,它的作用是打包程序。

default_platform :ios

lane :build do
    gym(export_method: 'enterprise')
end

有了這個Fastfile文件之后吠谢,只需要在終端中執(zhí)行cd project_path進入到項目主目錄土童,然后執(zhí)行fastlane build,fastlane就會開始自動打包工坊。當然献汗,想要執(zhí)行成功敢订,那還需要提前把所有證書都配置正確了。

在使用fastlane時罢吃,一般分為兩步:

  1. 初始化
  2. 配置Fastfile

下面以這兩步分別來講解如何使用fastlane:

1.1. 初始化

在使用fastlane時楚午,一般是通過Fastfile這樣的配置文件來跟它交互的,所以第一步初始化的目的是創(chuàng)建Fastlane文件(如果有需要尿招,也可以創(chuàng)建其他類型的配置文件矾柜,如Appfile、Matchfile就谜、Gymfile等)怪蔑,具體而言,就是找到項目主目錄丧荐,也就是xcodeproj或xcworkspace所在的目錄下缆瓣,創(chuàng)建一個名叫fastlane或.fastlane的文件夾,在這個文件夾下虹统,創(chuàng)建配置文件Fastfile弓坞。目錄結(jié)構(gòu)如下:

-test.xcodeproj
-fastlane
  -Fastfile
  -Appfile

除了手動創(chuàng)建,fastlane也提供一個命令來簡化這個過程

fastlane init
1.2. 配置Fastfile

配置Fastfile主要是在其內(nèi)部創(chuàng)建各種lane车荔,這些lane的作用就是幫助你達到某一種目的渡冻,比如你可能有一個叫做appstore的lane,用來發(fā)布app到appstore的lane夸赫;或者一個叫做adhoc的類菩帝,用來發(fā)布測試版本咖城,等等茬腿,下面的例子中定義一個名叫build的lane,我們對它的期望打包app宜雀。

default_platform :ios

lane :build do
end

如果現(xiàn)在執(zhí)行fastlane build切平,app并不會被打包,因為lane本身并沒有任何具體的功能辐董,它的作用是綁定各種具有特定功能的action悴品,讓這些action順序執(zhí)行。
那么简烘,為了達到打包app的作用苔严,需要在這個lane內(nèi)部添加一個具有打包功能的action,比如gym孤澎,代碼如下:

default_platform :ios

lane :build do
    gym(export_method: 'enterprise')
end

到目前為止届氢,一個簡單的Fastfile文件就配置完了,然后你可以先測試一下覆旭,首先需要把證書設(shè)置好退子,然后在終端執(zhí)行cd project_path進入項目主目錄岖妄,執(zhí)行fastlane build,如果一切順利寂祥,打包完成后你會在項目主目錄得到一個ipa文件荐虐。

2. switch lane

switch lane 指的是在一個lane中調(diào)用另一個lane

default_platform :ios

lane :lane1 do
    puts "lane1"
    lane2
end 
    
lane :lane2 do
    puts "lane2"
end 

例子中,lane1方法中調(diào)用了lane2丸凭,執(zhí)行fastlane lane1福扬,部分輸出如下

[?] ?? 
[16:09:47]: Driving the lane 'lane1' ??
[16:09:47]: --------------------------------------
[16:09:47]: --- Step: Switch to lane2 lane ---
[16:09:47]: --------------------------------------
[16:09:47]: Cruising over to lane 'lane2' ??
[16:09:47]: Cruising back to lane 'lane1' ??
[16:09:47]: 
lane1
lane2

可以看出,執(zhí)行是成功的惜犀,這說明fastlane支持lane之間相互調(diào)用忧换。
不過,在fastlane中向拆,并不是所有l(wèi)ane都能相互調(diào)用亚茬,需要滿足下面兩個條件之一:

  1. 兩個lane同屬于同一個platform
  2. 被調(diào)用的lane不屬于任何platform

那么,platform又是什么浓恳?

3. platform

首先刹缝,了解一下platform如何使用,F(xiàn)astfile的內(nèi)容如下:

platform :ios do
    lane :lane1 do
        puts "lane1"
    end 
    
    lane :lane2 do
        puts "lane2"
    end 
end

在這個例子中颈将,設(shè)置了兩個lane梢夯,名稱分別是lane1和lane2,這兩個lane被一個叫做ios的platform包圍晴圾。

platform的作用和lane的作用類似颂砸,lane的作用是綁定多個action,而platform則是綁定多個lane死姚。
由于fastlane目前可以在iOS人乓、android和Mac這三個平臺使用,所以可能在同一個Fastfile中存在不同平臺的lane都毒,使用platform可以使得lane的使用范圍更加明確色罚。還有一個需要注意的是,正如上一節(jié)所說的账劲,屬于不同platform的lane戳护,不能相互調(diào)用

如果需要在Android端使用fastlane,則可以額外添加一個叫做:android的platform瀑焦。另外腌且,也可以在platform之外添加lane,這種lane叫做通用lane榛瓮,可以被所有的lane調(diào)用铺董。

代碼如下:

lane :lane0 do
    puts "\nlane0"
end

platform :ios do
    lane :lane1 do
        puts "\nlane1"
    end 
    
    lane :lane2 do
        puts "\nlane2"
    end 
end

platform :android do
    lane :lane3 do
        puts "\nlane3"
    end 
    
    lane :lane4 do
        puts "\nlane4"
    end 
end

這個時候,如果在終端執(zhí)行fastlane lane1榆芦,fastlane會告訴你它找不到lane1

[!] Could not find 'lane1'. Available lanes: lane0, ios lane1, ios lane2, android lane3, android lane4

但是柄粹,fastlane在錯誤信息里面指出可用的lanes有這些:lane0, ios lane1, ios lane2, android lane3, android lane4喘鸟,那么不妨嘗試一下,執(zhí)行fastlane ios lane1

[?] ?? 
[16:21:29]: Driving the lane 'ios lane1' ??
[16:21:29]: 
lane1
[16:21:29]: fastlane.tools finished successfully ??

成功了

經(jīng)過多次試驗驻右,可以發(fā)現(xiàn)當lane被定義在platform之內(nèi)時什黑,需要使用類似fastlane platform_name lane_name的命令結(jié)構(gòu)來調(diào)用,比如調(diào)用lane1堪夭,則需要執(zhí)行fastlane ios lane1愕把;調(diào)用lane3,則需要執(zhí)行fastlane android lane3森爽;對于定義在platform之外的lane0恨豁,可以直接執(zhí)行fastlane lane0

4.default_platform

在實際使用中爬迟,很少有人會去執(zhí)行帶platform的命令橘蜜,一般是執(zhí)行命令fastlane lane_name,這是因為fastlane還提供了另一個方法:default_platform付呕。

default_platform :ios

lane :lane0 do
    puts "\nlane0"
end

platform :ios do
    lane :lane1 do
        puts "\nlane1"
    end 
    
    lane :lane2 do
        puts "\nlane2"
    end 
end

platform :android do
    lane :lane3 do
        puts "\nlane3"
    end 
    
    lane :lane4 do
        puts "\nlane4"
    end 
end

現(xiàn)在计福,在這個例子中,執(zhí)行fastlane lane1也可以成功調(diào)用lane1徽职。這是因為上面的例子中在設(shè)置了默認platform

default_platform :ios
5. action

action可以看作是fastlane中的功能模塊象颖,每一個action都有其特定的功能,它規(guī)定了功能的具體實現(xiàn)姆钉。比如之前例子中的gym就是action说订,它是被用來打包工程的。

在fastlane中潮瓶,內(nèi)置了一系列的action陶冷,官方文檔中將這些內(nèi)置的action分為了以下幾大類:

這里以cert這個action作為例子,來簡單了解action一般如何使用筋讨。
Fastfile中的代碼如下

default_platform :ios

platform :ios do
    lane :get_cert do
        cert(username: your_apple_id_username, development:false)
    end
end

如上述代碼所示埃叭,只要使用類似action_name(options)的格式就能執(zhí)行指定的action摸恍,其中options是一個Hash類型的值悉罕,所以也能寫成類似action_name(key1:value1,key2:value2)的格式。

使用fastlane get_cert執(zhí)行上述代碼立镶,fastlane會使用your_apple_id_username登錄到蘋果開發(fā)者網(wǎng)站查詢證書信息壁袄,如果本地鑰匙鏈中沒有安裝此賬號對應(yīng)證書,則fastlane會嘗試創(chuàng)建一個新的證書媚媒,如果創(chuàng)建成功嗜逻,fastlane會下載此證書并安裝到鑰匙鏈中,同時你也會得到對應(yīng)的CSR文件缭召、證書文件和其私鑰栈顷。
除此以外逆日,cert這個action中有很多option可被設(shè)置,具體可執(zhí)行fastlane action cert進行查詢萄凤。

6. 加載外部action

除了使用fastlane內(nèi)置的action以外室抽,還可以創(chuàng)建一些自定義action,并加載到fastlane中作為外部action靡努。
當需要為fastlane添加一些外部action時坪圾,只需要將這些自定義的action文件放在fastlane/actions/路徑下即可,fastlane會自動加載惑朦。
具體目錄結(jié)構(gòu)如下:

-test.xcodeproj
-fastlane
  -Fastfile
  -Appfile
  -actions
    -your_action1.rb
    -your_action2.rb

在Fastfile配置文件中兽泄,內(nèi)置的action和外部action的用法一致。

7. 加載plugin

plugin是什么漾月?
plugin實質(zhì)上就是由一些action組成的病梢,而且在加載到fastlane之后,這些action和其他action沒有什么區(qū)別梁肿,使用方法完全一致飘千。

plugin和外部action的區(qū)別?
如果你寫了一些自定義的action栈雳,想分享給其他人使用护奈,于是你提了一個PR給fastlane,但是fastlane由于一些原因沒有接受哥纫。這個時候你還有一條路可走霉旗,那就是創(chuàng)建一個包含這些action的plugin,并發(fā)布到RubyGems上蛀骇。

這里以加載fastlane-plugin-versioning為例厌秒,在fastlane/或fastlane/../路徑下執(zhí)行fastlane add_plugin versioning即可,接下來你就能在Fastfile中使用這個plugin中包含的action了擅憔。

fastlane add_plugin plugin_name的執(zhí)行結(jié)果是在fastlane/路徑下創(chuàng)建文件Pluginfile鸵闪,并修改Gemfile的內(nèi)容,以下是執(zhí)行命令之后Pluginfile和Gemfile中的內(nèi)容暑诸。

Pluginfile中內(nèi)容如下:

# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!

gem 'fastlane-plugin-versioning'

Gemfile中內(nèi)容如下

# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!

source "https://rubygems.org"

gem 'fastlane'

plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚌讼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子个榕,更是在濱河造成了極大的恐慌篡石,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件西采,死亡現(xiàn)場離奇詭異凰萨,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門胖眷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來武通,“玉大人,你說我怎么就攤上這事珊搀√耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵食棕,是天一觀的道長朗和。 經(jīng)常有香客問我,道長簿晓,這世上最難降的妖魔是什么眶拉? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮憔儿,結(jié)果婚禮上忆植,老公的妹妹穿的比我還像新娘。我一直安慰自己谒臼,他們只是感情好朝刊,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜈缤,像睡著了一般拾氓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上底哥,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天咙鞍,我揣著相機與錄音,去河邊找鬼趾徽。 笑死续滋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的孵奶。 我是一名探鬼主播疲酌,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼了袁!你這毒婦竟也來了朗恳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤早像,失蹤者是張志新(化名)和其女友劉穎僻肖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卢鹦,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冀自。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揉稚。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熬粗,靈堂內(nèi)的尸體忽然破棺而出搀玖,到底是詐尸還是另有隱情,我是刑警寧澤驻呐,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布灌诅,位于F島的核電站,受9級特大地震影響含末,放射性物質(zhì)發(fā)生泄漏猜拾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一佣盒、第九天 我趴在偏房一處隱蔽的房頂上張望挎袜。 院中可真熱鬧,春花似錦肥惭、人聲如沸盯仪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽全景。三九已至,卻和暖如春牵囤,著一層夾襖步出監(jiān)牢的瞬間蚪燕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工奔浅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馆纳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓汹桦,卻偏偏與公主長得像鲁驶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舞骆,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容