【iOS 開發】使用 Fastlane 自動化打包并發布 iOS 項目

Fastlane

Fastlane 是一個完全開源的項目,是一款為 iOSAndroid 開發者提供的自動化構建工具,它可以幫助開發者將 App 打包、簽名、測試、發布、信息整理、提交 App Store 等工作完整的連接起來,實現完全自動化的工作流,如果使用得當,可以顯著的提高開發者的開發效率,這是 GitHub 地址官方文檔


本文最終目的:

  • 終端輸入 fastlane beta 自動打包 ad-hoc 版本的 ipa 包并自動上傳到 蒲公英

  • 終端輸入 fastlane release 自動打包 app-store 版本的 ipa 包并自動上傳到 iTunes Connect

1. 安裝 Fastlane

  • 檢查 Ruby 版本,需要 2.0 及以上版本,并且需要將 gemsource 改為 https://gems.ruby-china.org/ ,在終端輸入以下命令。
// 查看 Ruby 版本
ruby -v
// 查看 gem 的source
gem sources
  • 檢查 Xcode 命令行工具是否安裝,在終端輸入以下命令,如果安裝過會有提示,如果沒裝過就會自動開始安裝。
xcode-select --install
  • 開始安裝 Fastlane ,在終端輸入以下命令。
sudo gem install fastlane --verbose
  • 如果安裝時出現錯誤無法安裝,就使用以下命令安裝。
sudo gem install -n /usr/local/bin fastlane
  • 安裝完成后可以輸入以下命令查看版本來驗證是否安裝成功。
fastlane --version

2. 安裝蒲公英的 Fastlane 插件

  • fastlane 安裝完成以后,在終端輸入以下命令安裝 蒲公英 插件。
fastlane add_plugin pgyer
  • 最后出現 Successfully installed plugins 表示安裝完成。
插件安裝
  • 安裝完成以后,會在系統根目錄生成 GemfileGemfile.lock 這兩個文件,這兩個文件不要刪掉,不然插件就得重裝了。
Gemfile

3. 修改項目配置

  • Xcode 打開你的項目,然后打開 Manage Schemes...
Xcode
  • 然后將工程的 Scheme 后面的 Shared 給勾上。
Xcode
  • 需要將這個改動上傳到 git 倉庫,不要忽略掉這個文件,提交的文件路徑信息如下,如果你改完沒有提示有需要改動的提交,那就看一下 .gitignore 里面是不是忽略掉了。
commit
  • 做這個改動的原因是,后面可能會用到 Jenkins + Fastlane 做持續集成,如果沒有這個文件,Jenkins 使用 fastlane 編譯項目時會提示 No schemes found in Xcode project or workspace ,所以最好先加上。

4. 初始化 Fastlane 配置

  • 打開終端,cd 到你項目工程的根目錄(xcodeproj 的同級目錄),輸入以下命令:
fastlane init
  • 初始化過程中會讓你輸入蘋果開發者賬號的賬號和密碼,這個信息會存儲在鑰匙串中,后續使用無需再輸入密碼。

  • 初始化過程中還會檢測當前項目的 App Identifier 是否已經在 Apple Developer 中,還會檢測當前 App 是否已經在 iTunes Connect 中,如果都滿足的話,過程應該是比較順利的。

  • 初始化完成之后會在你項目工程的目錄下生成一個 fastlane 文件夾,里面是 Fastlane 的一些配置文件。其中 Appfile 里面存放了 App 的基本信息包括 App_IdentifierAppIDTeam_ID 等。Fastfile 是最重要的一個文件,在這個文件里面可以編寫和定制我們打包腳本的一個文件,所有自定義的功能都寫在這里。

5. 編輯 Fastlane 腳本文件

  • 首先找到工程目錄下 fastlane 文件夾下的 Fastlane 文件,如果想要了解其中內容的含義可以自己去官方文檔查一下,這里就不解釋了。

  • 使用編輯器打開 Fastlane 文件,將所有內容刪除替換為以下內容。

fastlane_version "xxx"

default_platform :ios

platform :ios do

  desc "以 ad-hoc 方式打包并上傳到蒲公英"
  lane :beta do

    puts "自動生成 Provisioning Profiles 文件"
    sigh(
      # 指定輸出的文件夾地址
      output_path: "./archive/sign",
      # 是否為 AdHoc 證書(設為 false 或不寫默認為 AppStore 證書)
      adhoc: true
    )

    puts "以 ad-hoc 方式打包"
    gym(
      # 指定打包所使用的輸出方式 (可選: app-store, package, ad-hoc, enterprise, development)
      export_method: "ad-hoc",
      # 指定項目的 scheme 名稱
      scheme: "xxx",
      # 指定輸出的文件夾地址
      output_directory: "./archive/beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),
      # 指定打包方式 (可選: Release, Debug)
      configuration: "Release"
    )

    puts "上傳 ipa 包到蒲公英"
    pgyer(
      # 蒲公英 API KEY
      api_key: "xxx",
      # 蒲公英 USER KEY
      user_key: "xxx"
    )

  end

  desc "以 app-store 方式打包并上傳到 iTunes Connect"
  lane :release do

    puts "自動生成 Provisioning Profiles 文件"
    sigh(
      # 指定輸出的文件夾地址
      output_path: "./archive/sign"
    )

    puts "以 app-store 方式打包"
    gym(
      # 指定打包所使用的輸出方式 (可選: app-store, package, ad-hoc, enterprise, development)
      export_method: "app-store",
      # 指定項目的 scheme 名稱
      scheme: "xxx",
      # 指定輸出的文件夾地址
      output_directory: "./archive/release/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),
      # 指定打包方式 (可選: Release, Debug)
      configuration: "Release"
    )

    puts "上傳 ipa 包到 iTunes Connect"
    deliver(
      # 跳過截圖上傳
      skip_screenshots: true,
      # 跳過元數據上傳
      skip_metadata: true,
      # 跳過審核直接上傳
      force: true
    )

  end

end
  • 需要更改的地方我已經用 xxx 標注出來了,按照說明更改即可,更改完成后保存文件。

6. 開始自動打包并發布

  • 打開終端,cd 到你項目工程的根目錄(xcodeproj 的同級目錄)。

  • 輸入以下命令,即可開始自動打包并上傳到 蒲公英

fastlane beta
  • 輸入以下命令,即可開始自動打包并上傳到 iTunes Connect
fastlane release
  • 打包的 .ipa 包和 dSYM 文件,以及生成的 Provisioning Profiles 都在工程目錄下的 archive 文件夾內,看上面的輸出地址就知道了。

  • 最后出現一個 successfully ?? 就表示成功了,有錯誤終端也會有提示,按照提示繼續修改配置就行了。


Fastlane 還能實現很多自動化的功能,感興趣的自己去了解一下吧,這里有篇文章寫的很全面可以看一下: 小團隊的自動化發布-Fastlane帶來的全自動化發布

將來的你,一定會感激現在拼命的自己,愿自己與讀者的開發之路無限美好。

我的傳送門: 博客簡書微博GitHub

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容