使用fastlane實(shí)現(xiàn)iOS自動化打包上傳fir.im和testflight

前言

日復(fù)一日重復(fù)打包工作,是在浪費(fèi)寶貴的時(shí)間

自動化打包工具應(yīng)運(yùn)而生,是我們解放雙手的利器

fastlane官方文檔

github地址

安裝fastlane

安裝最新的Xcode命令行工具

?可以Developer Apple上手動下載對應(yīng)的Command Line Tools 安裝

?fastlane官方推薦的xcode-select --install安裝時(shí)最后結(jié)果是安裝不了該軟件

安裝 fastlane

通過gem安裝丰刊,放到/usr/local/bin下面

sudo gem install -n /usr/local/bin fastlane

其他的安裝方法:(擴(kuò)展,可跳過)

![Xnip2019-10-09_14-40-37.jpg](https://upload-images.jianshu.io/upload_images/1432381-304f32263aa05ac0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

以上:
方法1:是通過 Homebrew 軟件包管理器來進(jìn)行安裝,
方法2:就是我們最熟悉的方式,下載安裝包來進(jìn)行安裝,
方法3:是通過 RubyGems 來進(jìn)行移盆,RubyGems 是一個(gè)方便的 Ruby 程序包管理器,可以將一個(gè) Ruby 應(yīng)用程序打包到一個(gè) Gem 里伤为,作為一個(gè)安裝單元咒循。 一個(gè) Gem 就是一個(gè)封裝起來的應(yīng)用程序或代碼庫

配置環(huán)境變量(可跳過)

任意目錄如果可以執(zhí)行fastlane,說明你的環(huán)境變量已經(jīng)配置好钮呀,此處就無需配置

添加用戶環(huán)境變量

vim ~/.bash_profile

添加如下內(nèi)容

export PATH=/usr/local/bin:$PATH

保存退出剑鞍,使用 source ~/.bash_profile 來使配置立即生效

現(xiàn)在在項(xiàng)目根目錄下可以使用fastlane

fastlane使用

在項(xiàng)目根目錄下初始化

fastlane init

  • 四個(gè)選項(xiàng)

    What would you like to use fastlane for?
    
    1.Automate screenshots
    2.Automate beta distribution to TestFlight
    3.Automate App Store distribution
    4.Manual setup - manually setup your project to automate your tasks
    

    中文解釋如下:

    1 自動截屏。(幫助我們截取App的顯示到appstore上的 截圖)
    2 自動發(fā)布beta到TestFlight上爽醋,用于內(nèi)測。
    3 自動打包發(fā)布到AppStore上便脊。
    4 手動設(shè)置蚂四。
    

    上傳fir此處選擇的
    4

  • 初始化成功會生成如下目錄

Xnip2019-10-09_14-40-37.jpg

配置相關(guān)文件

配置Gemfile

如果使用cocoapods要加上(注意帶上當(dāng)前安裝的pod的版本號,否則會報(bào)錯)

gem 'cocoapods', '~>1.8.3'

執(zhí)行

bundle install

第一次運(yùn)行 bundle install 時(shí)自動生成 Gemfile.lock 文件哪痰。以后每次運(yùn)行 bundle install 時(shí),如果 Gemfile 中的條目不變 bundle 就不會再次計(jì)算 gem 依賴版本號遂赠,直接根據(jù) Gemfile.lock 檢查和安裝 gem。如果出現(xiàn)依賴沖突時(shí)可以通過 bundle update 更新 Gemfile.lock

配置Fastfile

default_platform(:ios)

platform :ios do
  
    before_all do
        # 如果你用 pod install
        cocoapods 
    end
  
    desc "打包上傳ipa到fir.im"
    lane :fir do
    
    # 如果你沒有申請adhoc證書晌杰,sigh會自動幫你申請跷睦,并且添加到Xcode里
    #   sigh(adhoc: true)
      
    # 以下兩個(gè)action來自fastlane-plugin-versioning,
    # 第一個(gè)遞增 Build肋演,第二個(gè)設(shè)定Version抑诸。
    # 如果你有多個(gè)target烂琴,就必須指定target的值,否則它會直接找找到的第一個(gè)plist修改
    # 在這里我建議每一個(gè)打的包的Build都要不一樣蜕乡,這樣crash了拿到日志奸绷,可以對應(yīng)到ipa上
  
    increment_build_number_in_plist(
        target: 'TestDemo',
        build_number: '5'
    )
    increment_version_number_in_plist(
        target: 'TestDemo',
        version_number: '1.0'
    )
    # gym用來編譯ipa
    gym(
        scheme: 'TestDemo',
        export_method: "ad-hoc", # 指定打包方式 ["app-store", "ad-hoc", "package", "enterprise", "development", "developer-id"]
        #teamID: "xxxxxx",  # developer.apple.com 上查看
        xcargs: "-allowProvisioningUpdates",
        output_directory: './firim',
        output_name: 'TestDemo.ipa'
    )
    # 上傳ipa到fir.im服務(wù)器,在fir.im獲取firim_api_token
    firim(firim_api_token: "xxxxxxxxxxxxx")  # token 在fir 上查看层玲。
  end
  
  desc "打包上傳testflight/app-store"
  lane :tf do

    increment_build_number_in_plist(
        target: 'TestDemo'
    )
    increment_version_number_in_plist(
        target: 'TestDemo',
        version_number: '1.0'
    )
    # gym用來編譯ipa
    gym(
        scheme: 'TestDemo',
        export_method: "app-store", # 指定打包方式
        #teamID: "xxxxxx",  # developer.apple.com 上查看
        xcargs: "-allowProvisioningUpdates",
        output_directory: './testflight',
        output_name: 'TestDemo.ipa'
    )
    #upload_to_testflight
    appstore       # 上傳你的App iTunes Connect
  end
end

關(guān)于build_number與version_number

1,version_number号醉、build_number都沒有設(shè)置,會自動獲取項(xiàng)目的version和build版本號辛块,并且都自動加1畔派。例如,fastlane打包前后版本號變化:ver1.0.2(Build 11)-> ver1.0.3(Build 12)润绵;
2,version_number設(shè)置了线椰、build_number沒設(shè)置,會自動獲取項(xiàng)目build版本號授药,build版本號+1士嚎;
3,version_number、build_number都設(shè)置了悔叽,那打包出來的版本號就是設(shè)置的版本號莱衩,不會自動+1;

添加兩個(gè)插件

fastlane add_plugin versioning
fastlane add_plugin firim

執(zhí)行打包

上傳fir.im

fastlane fir

fir為Fastfile文件中lane :fir do處設(shè)置的名字娇澎,可以為別的名字

執(zhí)行打包成功如下圖所示:


Xnip2019-10-10_15-01-27.jpg
  • 根目錄下firim文件夾下可看到ipa文件
Xnip2019-10-10_15-22-43.jpg

[圖片上傳中...(Xnip2019-10-10_15-01-59.jpg-bd69bf-1571314511771-0)]

  • fir.im應(yīng)用列表笨蚁,多了剛上傳的項(xiàng)目
Xnip2019-10-10_15-01-59.jpg

上傳testFlight

fastlane tf

問題

  1. Could not find action, lane or variable 'increment_build_number_in_plist'...
Xnip2019-10-10_21-04-25.jpg
  • 解決:

    fastlane add_plugin versioning

參考:https://github.com/SiarheiFedartsou/fastlane-plugin-versioning/issues/20

參考

  1. fastlane 自動打包到 fir.im 的踩坑之路
  2. fastlane ios快讀入門文檔
  3. fastlane使用說明書
  4. fastlane 在mac上配置iOS自動化上架
  5. iOS 自動打包 - fastlane (一)
  6. 和重復(fù)勞動說再見-使用fastlane進(jìn)行iOS打包
  7. macOS/Linux 環(huán)境變量設(shè)置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趟庄,隨后出現(xiàn)的幾起案子括细,更是在濱河造成了極大的恐慌,老刑警劉巖戚啥,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奋单,死亡現(xiàn)場離奇詭異,居然都是意外死亡猫十,警方通過查閱死者的電腦和手機(jī)览濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拖云,“玉大人贷笛,你說我怎么就攤上這事≈嫦睿” “怎么了乏苦?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尤筐。 經(jīng)常有香客問我汇荐,道長洞就,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任拢驾,我火速辦了婚禮奖磁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘繁疤。我一直安慰自己咖为,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布稠腊。 她就那樣靜靜地躺著躁染,像睡著了一般。 火紅的嫁衣襯著肌膚如雪架忌。 梳的紋絲不亂的頭發(fā)上吞彤,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音叹放,去河邊找鬼饰恕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛井仰,可吹牛的內(nèi)容都是我干的埋嵌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俱恶,長吁一口氣:“原來是場噩夢啊……” “哼雹嗦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起合是,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤了罪,失蹤者是張志新(化名)和其女友劉穎工坊,沒想到半個(gè)月后释液,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炒事,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年难礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吱七。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹤竭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出景醇,到底是詐尸還是另有隱情臀稚,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布三痰,位于F島的核電站吧寺,受9級特大地震影響窜管,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稚机,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一幕帆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赖条,春花似錦失乾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仿贬,卻和暖如春纽竣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茧泪。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工蜓氨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人队伟。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓穴吹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缰泡。 傳聞我的和親對象是個(gè)殘疾皇子刀荒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353