使用fastlane 實現(xiàn)ipa自動打包腳本

對于一個iOS APP的發(fā)布上線,一般來說都需要經(jīng)歷:編譯打包 -> 截圖 -> 填寫一些說明文字 -> 上傳ipa到itunes connect -> 提交供審核更米。每次都要進行這么多“繁瑣”的步驟辩块,對于某些步驟可能一次還不能執(zhí)行成功需要等著界面提示上傳錯誤然后手動重新再來一次(想想都覺得可怕)瞄勾。
在日常開發(fā)中塘揣,打包也是最后上線不可缺少的環(huán)節(jié)僻造,如果需要生成ipa文件通常需要在Xcode里點擊Product -> Archive憋他,然后在彈出來的Organizer中選擇導(dǎo)出什么類型(ad hoc/enterprise)的包。對于大項目來說動輒編譯十分鐘以上的來說髓削,一天打幾個包就差不多過去了竹挡。
為了解決這些問題,Felix Krause大神寫了一個工具集fastlane立膛。fastlane是一套使用Ruby寫的自動化工具集此迅,用于iOS和Android的自動化打包、發(fā)布等工作旧巾。

前言

最近用shell打包ipa發(fā)現(xiàn)終端總是提示
shell error: exportArchive: "***.app" requires a provisioning profile.
把配置文件刪除重新下載也一樣耸序,所以索性重新?lián)Q用另一種腳本工具來打包ipa,發(fā)現(xiàn)這個還是挺好用的

介紹

配置環(huán)境

  • 首先要安裝正確的 Ruby 版本搅窿。在終端窗口中用下列命令來確認:
    ruby -v

  • 如果沒有安裝,則輸入命令安裝gym:
    sudo gem install gym

  • 確保Xcode命令行工具安裝最新版本隙券,使用如下命令進行安裝:
    xcode-select --install

  • 以上依賴配置好之后就可以通過 rubygem 進行安裝fastlane:
    sudo gem install fastlane

  • 完成安裝

fastlane實戰(zhàn)

初始化

  • 打開終端男应,cd到你的工程目錄,然后執(zhí)行fastlane init命令開始初始化

  • 在執(zhí)行的過程中會要求填寫一些項目的資料娱仔,如Apple ID等沐飘,fastlane會自動檢測當(dāng)前目錄下項目的App Name和App Identifier,可以選擇自行輸入這些信息。初始化完成會在當(dāng)前目錄下面生成一個fastlane的文件夾耐朴。

  • 最重要的兩個文件就是Appfile和Fastfile借卧,主要的說明如下

    • Appfile里面存放了App的基本信息包括app_identifier、apple_id筛峭、team_id等铐刘,如果在init的時候輸入了正確的apple_id和密碼會自動獲取team_id。

    • Fastfile是最重要的一個文件影晓,在這個里面可以編寫和定制我們的自動化腳本镰吵,所有的流程控制功能都寫在這個文件里面。

fastfile 文件

Fastfile管理你所創(chuàng)建的 lane 挂签,了解詳情捡遍。它的格式是這樣的:
  lane :inHouse do
  gym(scheme: "XXX",
      export_method:"enterprise",
      output_directory "./build", # 打包后的 ipa 文件存放的目錄
      output_name "XXX"  # ipa 文件名
   )
  end

我的用法

fastfile文件里主要修改四個地方內(nèi)容

  1. platform :ios do(安卓,iOS都可以用)

2.desc "ad_Hoc 版本"(對lane的描述竹握,fastlane會自動將desc的內(nèi)容生成說明文檔)

  1. lane :beta do (定義一個lane(任務(wù))画株,可以理解為一個函數(shù),我們在執(zhí)行的時候使用fastlane lane名稱啦辐,比如 cd到項目根目錄谓传,然后 fastlane beta )

  2. gym(scheme: “項目名稱”, export_method:"app-store",output_directory: "./build",)

我一般用gym語法操作

gym(scheme: scheme_name, clean: true, export_method:'appstore', configuration: configuration, output_directory: output_directory, output_name: output_name)

結(jié)果

這次我只是用來打包測試,所以

# You can find the documentation at https://docs.fastlane.tools
# For a list of all available actions, check out``
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
# 指定打包所使用的輸出方式芹关,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id


default_platform(:ios)

platform :ios do
  desc "ad_Hoc 版本"
  lane :beta do
    gym(scheme: "***",
        export_method:"ad-hoc",
        output_directory: "./build",#文件路徑
         )
    end
end

接下來我們開始進階教程续挟,將打包好的ipa上傳到fir
在Fastfile文件里寫入:

# Update this, if you use features of a newer version
# 指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id



default_platform :ios

platform :ios do


 desc "開始打包-內(nèi)測版--開發(fā)證書 - dev"
    #內(nèi)測版--開發(fā)證書
 lane :adhoc do 
    #開始打包
    puts "開始打包-內(nèi)測版--開發(fā)證書 - dev"

    gym(
      export_method:"ad-hoc",
      output_directory:"/Users/weiyuxiang/Desktop/Order/build",# 打包后的 ipa 文件存放的目錄
     ) 
    #使用fir-cli上傳ipa
    sh "fir publish /Users/weiyuxiang/Desktop/Order/build/***.ipa -T fir的token"
  end
  
  desc "開始打包  --  企業(yè)公測版--hoc"
  lane :inhoc do
    gym(
      export_method:"app-store",
      output_directory:"/Users/weiyuxiang/Desktop/Order/build",
    )
    #使用fir-cli上傳ipa
    sh "fir publish /Users/weiyuxiang/Desktop/Order/build/***.ipa -T  fir的token"
  end

end

在測試的時候用
fastlane adhoc
上架則用
fastlane inhoc
到這里一般沒有問題侥衬,但是樓主我還會遇到一個問題诗祸,最后用fir上傳的時候會報這些錯誤:

/Users/weiyuxiang/.rvm/rubies/ruby-2.2.4/lib/ruby/gems/2.2.0/gems/fastlane-2.95.0/fastlane_core/lib/fastlane_core/ui/interface.rb:153:in `shell_error!': [!] Exit status of command 'fir publish /Users/weiyuxiang/Desktop/Order/build/***.ipa -T a5bd6574b7292220d5c4b44b6' was 1 instead of 0. (FastlaneCore::Interface::FastlaneShellError)
/Users/weiyuxiang/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:458:in `block in replace_bin_path': can't find executable fir for gem fir-cli. fir-cli is not currently included in the bundle, perhaps you meant to add it to your Gemfile? (Gem::Exception)
    from /Users/weiyuxiang/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:478:in `block in replace_bin_path'
    from /Users/weiyuxiang/.rvm/gems/ruby-2.2.4/bin/fir:22:in `<main>'
    from /Users/weiyuxiang/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `eval'
    from /Users/weiyuxiang/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `<main>'

按照錯誤提示,在 Gemfile 文件里加一句:
gem "fir"
即可


Fastlane能做的事情還有很多轴总,大家可以去好好看看文檔直颅,研究一些高級的用法吧!

最后

腳本雖好用怀樟,但是我們在除了能知道如何使用以外功偿,也應(yīng)該去深入了解其中的一些原理,做工具的主人而不是工具的奴隸

參考文檔:

  1. 使用fastlane gym實現(xiàn)ipa自動打包腳本
  2. iOS中使用Fastlane實現(xiàn)自動化打包和發(fā)布
  3. iOS中fastlane的使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末往堡,一起剝皮案震驚了整個濱河市械荷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虑灰,老刑警劉巖吨瞎,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穆咐,居然都是意外死亡颤诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着绊,“玉大人,你說我怎么就攤上這事熟尉」槁叮” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵斤儿,是天一觀的道長剧包。 經(jīng)常有香客問我,道長往果,這世上最難降的妖魔是什么疆液? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮陕贮,結(jié)果婚禮上堕油,老公的妹妹穿的比我還像新娘。我一直安慰自己肮之,他們只是感情好掉缺,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戈擒,像睡著了一般眶明。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筐高,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天搜囱,我揣著相機與錄音,去河邊找鬼柑土。 笑死蜀肘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稽屏。 我是一名探鬼主播幌缝,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诫欠!你這毒婦竟也來了涵卵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤荒叼,失蹤者是張志新(化名)和其女友劉穎轿偎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體被廓,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡坏晦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆婿。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡球碉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仓蛆,到底是詐尸還是另有隱情睁冬,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布看疙,位于F島的核電站豆拨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏能庆。R本人自食惡果不足惜施禾,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搁胆。 院中可真熱鬧弥搞,春花似錦、人聲如沸渠旁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽一死。三九已至肛度,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間投慈,已是汗流浹背承耿。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伪煤,地道東北人加袋。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像抱既,于是被迫代替她去往敵國和親职烧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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