運用應用程式發布和 Fastlane 加快發布 iOS 預先發布版的速度

1. 事前準備

4cddd34bd261cea0.png

在本程式碼研究室中,您將瞭解如何使用 Firebase 應用程式發布fastlane 外掛程式向測試人員發布 iOS 應用程式、收集測試裝置 UDID,並將這些裝置註冊到應用程式的佈建設定檔,以便快速將 Ad Hoc 版本提供給測試人員。

課程內容

  • 如何使用 Firebase 應用程式發布和 fastlane 上傳 iOS 預先發布版應用程式 (Ad Hoc) 並發布給測試人員。
  • 如何申請成為測試人員,並在測試裝置上下載已發行的應用程式。
  • 如何使用 App Distribution 的 fastlane 外掛程式匯出測試裝置 UDID,快速註冊測試裝置。
  • 如何更新應用程式的佈建設定檔,並重新上傳應用程式進行發布。

事前準備

  • Google 帳戶
  • 已安裝 XCode 11.7 以上版本的 Apple 電腦
  • 內建於 Xcode 的 Ad Hoc 預先發布版 iOS 應用程式
  • 付費的 Apple 開發人員帳戶
  • 用於測試的實體 iOS 裝置。

iOS 模擬器應用程式適用於本程式碼研究室的大部分內容,但模擬器無法下載版本。

您還是可以檢查設定是否成功按鈕,即可開啟「應用程式發布測試人員」網頁應用程式。

2. 開始使用

設定百貨公司

應用程式發布功能已與 Fastlane 整合,方便您自動發布應用程式的預先發布版本。應用程式發布功能會與 fastlane 設定整合。

  1. 安裝並設定Fastlane
  2. 在設定期間,於專案的根目錄中執行 fastlane init,然後選擇「手動設定」。您會看到名為 fastlane 的子目錄,其中含有 FastfileAppfilePluginfile,可用來設定 fastlane

安裝 Firebase CLI

此外,您還必須安裝 Firebase CLI。如果您使用的是 macOS 或 Linux,可以執行下列 cURL 指令:

curl -sL https://firebase.tools | bash

如果您使用的是 Windows,請參閱安裝操作說明,取得獨立二進位檔或透過 npm 進行安裝。

安裝 CLI 後,執行 firebase --version 應會回報 12.0.0 或更高的版本:

$ firebase --version
12.0.0

3. 透過 Fastlane 建構應用程式

建構應用程式

  1. ./fastlane/Appfile. 中為 fastlane 設定一些全域變數,包括應用程式 ID 和 Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 將以下內容新增至 ./fastlane/Fastfile,即可建立您的第一條車道,並使用 fastlane 的 build_app 動作 (也稱為 gym) 建構應用程式:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. 簽署要發布的應用程式。

在本程式碼研究室中,您將使用 get_certificates (也稱為 cert) 管理自己的認證和設定檔,這會在本機產生簽署憑證,並將所有內容儲存在 macOS 鑰匙圈。但一般來說,建議您使用「Fastlane」 sync_code_signing action (也稱為 match) 功能,安全地管理團隊的程式碼簽署憑證和設定檔。

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. 使用 get_provisioning_profile 動作 (也稱為 sigh) 為應用程式設定佈建設定檔。以便與測試人員分享應用程式。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [選用] 如果您從未執行過應用程式,請執行下列指令,在 Apple Developer Console 建立應用程式:

$ fastlane produce --skip_itc

  1. 最後,以在車道的方向上建構應用程式。

系統會提示你輸入 Apple ID、密碼 (儲存在「鑰匙圈」中的密碼),以及應用程式軟體包 ID。

$ fastlane build

如有任何問題,請參閱 fastlane 疑難排解指南

4. 將應用程式上傳至 Firebase

應用程式已建立完成,現在可以將應用程式上傳到「應用程式發布」。

建立及設定 Firebase 專案

  1. 登入 Firebase 帳戶。
  2. Firebase 控制台建立或新增專案,然後將專案命名為「UDID Export Codelab」。

您不必為這項專案啟用 Google Analytics。

  1. 按一下 [Create Project]

將 iOS 應用程式加入專案

  1. 按一下 iOS 圖示建立新的 Firebase iOS 應用程式,並輸入應用程式的軟體包 ID。

9c26c130a6c42212.png

  1. 略過後續步驟,然後按一下「繼續前往主控台」。稍後您將會在應用程式中加入 SDK。

您現在可以在「專案總覽」頁面存取專案和應用程式。

66f79cc8a97fa8e9.png

啟用應用程式發布功能

  1. 發行期間,以及在「監控」部分,按一下「應用程式發布
  2. 接受條款後,按一下「開始使用」來啟用應用程式發布功能。

460213326c2784ae.png

設定在車道的配送服務

  1. 在 iOS 專案的根目錄執行下列指令,將應用程式發布新增至 fastlane 設定。

如果指令提示您選擇選項,請選取「Option 3: RubyGems.org」

$ fastlane add_plugin firebase_app_distribution

  1. 確認外掛程式已安裝:

$ fastlane

輸出內容應會在已安裝的外掛程式清單中顯示 fastlane-plugin-firebase_app_distribution

  1. 確認外掛程式已安裝後,選擇選項 0 以取消。

驗證 Firebase 專案

如要使用 fastlane 外掛程式,您需要先驗證 Firebase 專案。

  1. 執行下列指令,將 CLI 連結至 Google 帳戶:

$ firebase login

  1. 指令列印驗證連結後,請在瀏覽器中開啟連結。
  2. 畫面上出現提示時,請登入 Google 帳戶,並授予 Firebase 專案的存取權。

發布應用程式

現在可以發布應用程式了。

  1. ./fastlane/Fastfile 頂端定義名為 firebase_app_id 的變數。將 <your_app_id> 替換成您所建立應用程式的 Firebase 應用程式 ID (可在專案設定頁面中找到)。

Fastfile 是以 Ruby 編寫,因此請使用 Ruby 語法來定義變數。

firebase_app_id = "<your_app_id>"
  1. 新增名為 distribute 的新車道,以呼叫車道,然後使用 firebase_app_distribution 動作發行應用程式。
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. 跑到全新賽道,建構應用程式並建立發行版本。

$ fastlane distribute

此時,Fastfile 應如下所示:

firebase_app_id = "<your Firebase app ID>"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end

重新整理 Firebase 控制台後,就會看到應用程式的新版本。

c59dc1a94de3bf3c.png

5. 邀請測試人員下載應用程式

測試人員接受測試 Ad Hoc 版本的邀請時,系統會要求他們共用 UDID 的權限。如果同意,「應用程式發布」會收集裝置資訊,並透過電子郵件通知您。在本節中,您要將自己新增為測試人員,以便下載及測試您發行的應用程式。

將自己新增為版本測試人員

  1. 在 Fastfile 頂端的 firebase_app_id 下方,建立變數以保留測試人員,並提供您自己的電子郵件地址以及其他您想嘗試的電子郵件地址。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. 套用 Ruby 的 Array#join 方法,將 app_testers 陣列轉換為以半形逗號分隔的字串,這是 testers 參數預期的字串。接著,將結果傳遞至 firebase_app_distribution.testers 參數
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end

此時,Fastfile 應如下所示:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end
  1. 再次行駛車道。

$ fastlane distribute

踏上車道後,你新增的測試人員會收到來自應用程式發布活動的邀請電子郵件,通知他們有可用的新版本。現在只要前往 Firebase 控制台,就能在應用程式版本底下查看新增的測試人員。

2e0fc9603b868af8.png

由於您已提供電子郵件地址,因此您將收到 Firebase 應用程式發布的電子郵件,邀請您測試應用程式。你現在已是第一位測試人員!繼續按照下一節的說明在測試裝置上設定測試人員。

註冊測試裝置

測試人員需要在測試裝置上登入 Google,才能存取您受邀測試的應用程式版本。由於測試版本是 Ad Hoc 版本,因此您也必須安裝 Firebase 設定檔來註冊測試裝置。之後可用的版本,可以透過應用程式發布測試人員的網頁應用程式存取,並使用已新增至裝置主畫面的網站片段。

  1. 在 iOS 測試裝置上開啟從 Firebase 應用程式發布傳送的電子郵件,然後輕觸「開始使用」連結。請務必在 Safari 中開啟該連結。
  2. 你現已進入「應用程式發布」測試人員網頁應用程式。在隨即顯示的頁面中,使用你的 Google 帳戶登入,然後輕觸「接受邀請」

d833407de251b89f.png

  1. 系統隨即會顯示您受邀加入的版本。輕觸任一版本下方的「註冊裝置」

fd141215e54a938d.png

  1. 當系統提示時,請下載 Firebase 設定檔,然後在「設定」應用程式中安裝設定檔。

安裝設定檔會授予 Firebase 權限:

  • 收集裝置的專屬裝置 ID (UDID) 來註冊測試裝置。

Firebase 傳送電子郵件給 Firebase 專案的所有擁有者和編輯者,並附上測試裝置的 UDID。

  • 將網路片段安裝在測試裝置的主畫面。網站片段會開啟應用程式發布測試人員網頁應用程式,讓您安裝及存取所有測試應用程式。

在「應用程式發布測試人員」網頁應用程式中,您的測試裝置現已註冊應用程式版本。

fe93d649dfa25877.png

與 Firebase 共用測試裝置的 UDID 後,您現在可以繼續成為開發人員。應用程式發布資訊主頁的「測試人員」分頁現在會顯示在應用程式版本下方,狀態為「已接受」:

7b9f665a63a384cf.png

在下一節中,您會將裝置 UDID 新增至應用程式的佈建設定檔,然後建構與測試裝置相容的應用程式版本。

匯出測試人員裝置 UDID

Firebase 傳送電子郵件給開發人員,內含測試裝置的 UDID。應用程式發布功能可讓您直接將多部新裝置 UDID 匯出為原始文字檔案,輕鬆一次收集。

  1. 如要匯出所有 UDID,請開啟「測試人員與」群組標籤。

241a9936898a2fc0.png

  1. 按一下「匯出 Apple UDID」

bcf0c26c522d9b4e.png

檔案應包含測試裝置的 UDID。

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

您也可以透過指令列使用 fastlane 匯出 UDID,這些作業將在下一節進行。

6. 更新應用程式的佈建設定檔並重新建構

現在請將測試裝置的 UDID 新增至應用程式的佈建設定檔,重新建立適用於裝置的應用程式版本,並發布新版本。

新增 UDID 匯出車道

  1. 在 Fastfile 頂端新增另一個變數,並設為測試人員的檔案路徑系統將會下載裝置的 UDID。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. 設定新車道,使用「應用程式發布」外掛程式的 UDID 匯出動作下載測試人員 UDID,就像從控制台執行一樣。
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. 執行下列車道即可下載 UDID。

$ fastlane download_udids

  1. 列印下載的檔案,當中應包含測試裝置 UDID。

$ cat tester_udids.txt

新增裝置至 Apple Developer Console

  1. 建立下列車道,將 UDID 新增至 Apple Developer Console 的裝置清單,並使用 fastlane 的 register_devices 動作將 UDID 新增至佈建設定檔:
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. 然後跑車:

$ fastlane add_new_devices

您應該會在開發人員控制台的裝置清單中看到新裝置。

將裝置新增至佈建設定檔

  1. force 引數新增至 build 車道的佈建設定檔步驟,以便在每次建構時強制要求其取得新裝置。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

重新執行車道來建造和上傳

現在,請設定新車道的「distribute」車道,以便將裝置新增至佈建設定檔、重新建立應用程式,然後再發布。

  1. 呼叫 distribute 的新車道:
lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: "1:123456789:ios:abcd1234",
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end
  1. distribute車道:

$ fastlane distribute

此時,Fastfile 應如下所示:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end

lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end

lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end

透過測試裝置下載版本

應用程式現已包含測試裝置 UDID,因此可以安裝到測試裝置上。

e275f73d57cc8fb1.png

  1. 在測試裝置上,使用電子郵件中的連結或裝置主畫面上的圖示,返回「應用程式發布測試人員」網頁應用程式。

前往 UDID 程式碼研究室應用程式時,您會看到該版本已經可供下載。

dad6d03b6ad78746.png

  1. 如果您使用的是實體裝置,請按下下載、安裝並執行應用程式!

7. 恭喜

現在您已經設定應用程式發布和 fastlane,可以自動執行預先發布版測試程序。現在,如果您要邀請其他測試人員,或將他們的 UDID 加到應用程式,只需執行一個指令:fastlane distribute

如此一來,您就不必再逐一向測試人員收集 UDID,或前往 Apple 開發人員控制台更新裝置清單或佈建設定檔。您甚至不需要開啟 XCode!

這項工作流程易於設定,在持續整合環境中每小時或每天執行一次。

延伸閱讀