fastlane使用 -- iOS從打包到發(fā)布的自動(dòng)化處理

一、fastlane簡介

fastlane是用Ruby語言編寫的一套自動(dòng)化工具集和框架,每一個(gè)工具實(shí)際都對應(yīng)一個(gè)Ruby腳本,用來執(zhí)行某一個(gè)特定的任務(wù),而fastlane核心框架則允許使用者通過類似配置文件的形式,將不同的工具有機(jī)而靈活的結(jié)合在一起,從而形成一個(gè)個(gè)完整的自動(dòng)化流程。

二、為什么選擇fastlane

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

一個(gè)需求完成后需要打包并上傳至蒲公英供產(chǎn)品測試驗(yàn)收,而打包是一個(gè)復(fù)雜且需要謹(jǐn)慎的工作,大致的打包和上傳蒲公英流程如下:

選擇scheme -> 選擇項(xiàng)目 -> Archive -> 選擇打包方式 -> 選擇手動(dòng)管理證書 -> 選擇配置文件 -> 導(dǎo)出IPA包 -> 登錄蒲公英 -> 選擇項(xiàng)目 -> 上傳新版本 -> 選擇IPA包 -> 填寫說明 -> 發(fā)布

完成一個(gè)打包至少需要這13步,不能出現(xiàn)錯(cuò)誤,所有的操作必須按部就班,一步步執(zhí)行,而且如果出現(xiàn)bug需要重新打包,需要重新執(zhí)行以上步驟,十分繁瑣。

作為一名程序員,這不是我們想要的?。?!
我們要以最簡潔的方式,完成最復(fù)雜的工作,那么,fastlane就是最好的選擇??

三、如何使用fastlane

1.安裝fastlane
終端執(zhí)行sodu gem install fastlane -NV -n/usr/local/bin安裝fastlane工具

2.初始化fastlane
終端進(jìn)入項(xiàng)目所在目錄,并輸入fastlane init
會出現(xiàn)需要選擇的初始化方式:

  1. ?? Automate screenshots (自動(dòng)截圖)
  2. ????? Automate beta distribution to TestFlight (自動(dòng)testfilght型配置)
  3. ?? Automate App Store distribution (自動(dòng)發(fā)布型配置)
  4. ?? Manual setup - manually setup your project to automate your (需要手動(dòng)配置內(nèi)容)

選擇2和3會要求填寫Apple ID和密碼,輸入正確即可,后期還可以修改

3.安裝蒲公英插件
終端執(zhí)行fastlane add_plugin pgyer,提示成功后即可

注意:

fastlane初始化成功后會生成:fastlane文件夾(包含Appfile、Fastfile兩個(gè)文件)和Gemfile、Gemfile.lock兩個(gè)文件,其中
1.Appfile可配置打包需要的Apple id和team id
2.Fastfile為我們工作的主要文件,用于命令行調(diào)用和處理具體事務(wù)流程

四、項(xiàng)目配置

  1. gym初始化和配置
    a. 終端執(zhí)行fastlane gym init,成功后生產(chǎn)Gymfile文件
    b. Gymfile文件中寫入IPA包出包路徑:output_directory(“./IPA”)

  2. 配置Apple ID和Team ID
    Appfile中添加Apple ID和Team ID格式如下:

apple_id “xxx@degnity.com
team_id “W6******3C”

  1. 配置Fastfile -- 重要(打包代碼都在這里執(zhí)行)
  • 自動(dòng)添加設(shè)備到Apple Developer
  1. 創(chuàng)建一個(gè)由制表符tab分割的文件device.txt,將此文件放在項(xiàng)目目錄下
    文件格式如下:

Device ID Device Name
135***********************5be Name
8si***********************8as Name

固定格式不得改變,每行包含一個(gè)設(shè)備號和一個(gè)用戶名,最好將這個(gè)
文本復(fù)制下來或者在官網(wǎng)下載示例文件將里邊的文本復(fù)制下來,再添加到txt文件中,然后修改設(shè)備號和名稱即可

  1. 增加方法add_devices
lane :add_device do
    register_devices(
        devices_file: "./devices.txt"
    ) 
    #重新下載provisioning profile
    get_provisioning_profile
end
  • 版本號、構(gòu)建號獲取和自增操作
#獲取構(gòu)建版本號
get_build_number()
#獲取版本號
get_version_number()
#構(gòu)建版本號自增
increment_build_number()
#版本號自增
increment_version_number()

可自定義版本號或構(gòu)建號:

#number為自定義內(nèi)容
increment_build_number(build_number: “#{number}")
  • build_app打包配置
#構(gòu)建版本配置
build_app(
  #項(xiàng)目路徑 -- 本項(xiàng)目目錄下初始化fastlane時(shí)不需要
    project: project_path,
    #出包方式:"app-store", "ad-hoc", "package", "enterprise", “development"
    export_method: "ad-hoc",
    #打包環(huán)境 -- "Release"、"Debug"、自定義等
    configuration: "Release",
    #需要打包的scheme
    scheme: "xxx_Dev",
    export_options: {
        #配置文件 -- 通過bundle id獲取對應(yīng)的配置文件
        provisioningProfiles: {
            "com.xxx.xxxtest" => "xxxtest_adHoc",
            "com.xxx.xxx" => "xxx_adHoc",
        }
    }
)
  • gym配置
gym(
    #打包前clean
    clean: "true",
    #出包方法 app-store, ad-hoc, package, enterprise, development
    export_method: "ad-hoc",
    #指定打的哪個(gè)scheme
    scheme: “xxxProject_Debug”,
    #指定project (未使用cocopods)
    project: “xxxx.xcodeproj”,
    #指定workspace (使用cocopods)
    workspace: “xxxx.xcworkspace”,
    #指定構(gòu)建App的配置  Release、Debug、自定義
    configuration: “Debug",
    #輸出目錄
    output_directory: “./IPA",
    #輸出名稱
    output_name: "測試包"
    # include_symbols: "",#是否包含調(diào)試符號
    # include_bitcode: ""#是否開啟bitcode
)
  • 上傳至蒲公英
pgyer(api_key:"******", user_key:"******",update_description:"更新說明xxxxx")

至此所有打包文件都已配置完成,將這些代碼按需求進(jìn)行組合使用即可

五、學(xué)以致用

目前已完成的功能:

1、找到為止大眾版Dev環(huán)境自動(dòng)打包并上傳至蒲公英
2、找到為止大眾版Release環(huán)境自動(dòng)打包并上傳至蒲公英
3、找到為止簽約版Dev環(huán)境自動(dòng)打包并上傳至蒲公英
4、找到為止簽約版Release環(huán)境自動(dòng)打包并上傳至蒲公英
5、新項(xiàng)目只需添加bundle id和對應(yīng)的配置文件即可使用自動(dòng)打包和上傳功能

將學(xué)習(xí)的fastlane使用到實(shí)際應(yīng)用中,下面是根據(jù)需求完成的一個(gè)完整的打包流程(主要是Fastfile文件的代碼部分):

platform :ios do

lane :update do
    puts "\033[35m請輸入更新說明:\033[0m"
    pgyer_description = STDIN.gets.chomp()
    #構(gòu)建號自增
    increment_build_number()
    
    build_app(
      #出包方法:app-store, ad-hoc, package, enterprise, development
      export_method: "ad-hoc",
      #環(huán)境配置
      configuration: "FastlaneTest_Debug",
      #打包scheme
      scheme: "FastlaneTest",
      export_options: {
        #配置文件 -- 通過bundleid來選擇配置文件
        provisioningProfiles: ({
          "com.xxxxxxxx.xxxtest" => "xxxxtest_adHoc"
        })
     }
    )

    pgyer(api_key:"********", user_key:"********",update_description:pgyer_description)
  end

六、寫在最后的話

1、fastlane簡化了項(xiàng)目發(fā)布和測試打包的步驟,對提高工作效率有較大的幫助,而且實(shí)現(xiàn)方法都被開發(fā)者封裝好成了一個(gè)個(gè)實(shí)用的方法,使用者只需要將這些方法進(jìn)行組合和配置即可,簡單方便。
2、學(xué)習(xí)過程中,查看了很多其他開發(fā)者編寫的使用說明,但因?yàn)榕c別人遇到的問題不同或因?yàn)闀r(shí)間太久以前的方法都已失效,導(dǎo)致學(xué)習(xí)中走了一些彎路,最后都是從官方文檔中得到了正確的解決方法,所以學(xué)習(xí)還是需要從官方文檔著手。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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