iOS自動(dòng)化構(gòu)建 - fastlane集成

Fastlane是一套使用Ruby寫的自動(dòng)化工具集,旨在簡(jiǎn)化Android和iOS的部署過(guò)程,自動(dòng)化你的工作流。它可以簡(jiǎn)化一些乏味、單調(diào)、重復(fù)的工作,像截圖、代碼簽名以及發(fā)布App
一行命令實(shí)現(xiàn)打包工作,不需要時(shí)時(shí)等待操作下一步,節(jié)省打包的時(shí)間去做其他的事。

Fastlane的優(yōu)勢(shì)主要是下面幾方面:

  • 避免頻繁修改配置導(dǎo)致可能出現(xiàn)的Release/Debug環(huán)境錯(cuò)誤,如果沒有檢查機(jī)制,那將是災(zāi)難,即使有檢查機(jī)制,我們也不得不重新打包,浪費(fèi)了一次打包時(shí)間。畢竟人始終沒有程序可靠,可以告別便利貼了。
  • 通過(guò)配置自動(dòng)上傳到蒲公英,fir.im內(nèi)測(cè)平臺(tái)進(jìn)行測(cè)試分發(fā),也可以直接上傳到TestFlight,iTunes Connect。
  • 證書的同步更新,管理,在新電腦能夠迅速具備項(xiàng)目打包環(huán)境。

一、安裝xcode命令行工具

終端執(zhí)行xcode-select --install,如果沒有安裝,會(huì)彈出對(duì)話框,點(diǎn)擊安裝。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已經(jīng)安裝
xcode-select --install

二、安裝Fastlane

終端執(zhí)行sudo gem install fastlane -NV使用gem安裝的或brew cask install fastlane安裝完了終端執(zhí)行fastlane --version,確認(rèn)下是否安裝完成和當(dāng)前使用的版本號(hào)。
sudo gem install fastlane -NV
fastlane --version

三、初始化Fastlane

1.終端cd到你的項(xiàng)目目錄執(zhí)行,再執(zhí)行fastlane init
cd [工程根目錄]
fastlane init
執(zhí)行fastlane init.png
2.這里會(huì)彈出四個(gè)選項(xiàng),問(wèn)你想要用Fastlane做什么? 之前的老版本是不用選擇的。選幾都行,后續(xù)我們自行根據(jù)需求完善就可以,直接選3執(zhí)行(最新的Fastlane需要選2
3.終端輸入AppleID 賬號(hào)和密碼,選擇對(duì)應(yīng)的App Store Connect teams和Developer Portal
1.png
4.登錄成功后會(huì)提示你是否需要下載你的App的metadata,輸入y執(zhí)行等待就可以,最終終端執(zhí)行完畢之后返回bundle update,則表示成功下載
2.png
5.打開工程,在設(shè)置Current Project Version 設(shè)置1和 Versioning System設(shè)置Apple Generic
3.png
6.新開一個(gè)終端窗口,進(jìn)入工程根目錄,更新 bundle(會(huì)提示輸入密碼,這里輸入開機(jī)密碼)
cd [工程根目錄]
bundle update
4.png
當(dāng)返回Bundle updated!則表示bundle更新完成
7.到這一步前置配置全部完成

四、蒲公英 插件安裝

1.進(jìn)入工程根目錄
cd [工程根目錄]
2.安裝蒲公英的 fastlane 插件
fastlane add_plugin pgyer
3.會(huì)詢問(wèn)fastlane 是否應(yīng)該修改路徑中的 Gemfile,輸入y執(zhí)行等待,當(dāng)返回Successfully installed plugins,則表示安裝插件成功
5.png

五、fastfile 配置

  • Fastlane 會(huì)自動(dòng)在工程根目錄中生成 fastlane 目錄,其中就會(huì)有 fastlane 的配置文件 fastlane/Fastfile,F(xiàn)astfile可以選擇各種文本工具打開,個(gè)人推薦使用VSCode,編輯使用更方便
  • 目前配置的蒲公英的Fastfile,不同的項(xiàng)目,開發(fā)人員,蒲公英賬號(hào),只需要修改對(duì)應(yīng)的配置即可
  • 更多信息查看蒲公英文檔
# This file contains the fastlane.tools configuration
# 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


default_platform(:ios)

platform :ios do

  desc "用于發(fā)布到蒲公英"

  lane :adHoc do


#—————————————————————根據(jù)實(shí)際項(xiàng)目對(duì)應(yīng)修改—————————————————————————
    #工程名稱
    scheme = "xxxx" 
    bundleID = "xxxxx"

    #app名稱
    appName = "xxxxx"
    
    #蒲公英獲取key
    api_key = "xxxx"
    #user_key = "xxxx"(最新版本不需要user_key)

    #蒲公英下載地址
    downloadURL = "xxxx"
#—————————————————————————————————————————————————————————————
    
    puts "*************| 開始上傳蒲公英... |*************"

    #輸入蒲公英上傳ipa包后輸入的版本描述信息
    puts "請(qǐng)輸入版本描述:"
    descStr = STDIN.gets

    #指定打包環(huán)境 Debug、Test、Release、PreRelease
    puts "請(qǐng)指定需要打包的方式:1:Debug 2:Test 3:PreRelease 4:Release"
    configurationType = STDIN.gets
    if configurationType == "4\n"
      configurationName = "Release"
    elsif  configurationType == "3\n"
      configurationName = "PreRelease"
    elsif  configurationType == "2\n"
      configurationName = "Test"
    elsif  configurationType == "1\n"
      configurationName = "Debug"
    end

    #構(gòu)建打包 也叫g(shù)ym
    build_app(
      clean: true, #打包前clean 
      scheme: scheme, 
      workspace: "#{scheme}.xcworkspace", 
      export_method: "ad-hoc",
      include_bitcode: false,
      configuration: configurationName,#打包方式 
      output_directory: "./ipa", #導(dǎo)出路徑 文件夾沒有的話會(huì)自動(dòng)新建一個(gè)
      silent: true, #在構(gòu)建時(shí)隱藏終端不必要輸出的信息
      output_name: "#{scheme}_#{Time.now.strftime('%Y%m%d%H%M')}.ipa"
    )

    pgyer(api_key: api_key, update_description: "更新內(nèi)容:#{descStr}")
    notification(title: "提示", message: "#{appName} adHoc 打包成功: #{downloadURL}", open: downloadURL)

    puts "*************| 上傳蒲公英成功?? |*************"
  end

end

六、打包到蒲公英

cd [工程根目錄]
fastlane adHoc
  • 終端執(zhí)行astlane adHoc中的adHoc,是對(duì)應(yīng)的Fastfile文件中的lane命名
6.png
  • 注意 可以通知設(shè)置Fastfile文件中的configuration 來(lái)設(shè)置打包環(huán)境,而不需要手動(dòng)選擇,我已經(jīng)在Fastfile配置中加了選擇功能,根據(jù)對(duì)應(yīng)的環(huán)境選擇即可
  • 等待終端執(zhí)行結(jié)果即可,打包到蒲公英成功時(shí),會(huì)有對(duì)應(yīng)的通知提示,終端也會(huì)返回fastlane.tools finished successfully ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容