使用 App Distribution 和 fastlane 更快地分發預先發布的 iOS 版本

1. 開始之前

4cddd34bd261cea0.png

在此 Codelab 中,您將學習如何使用Firebase App Distribution及其fastlane插件將iOS 應用程式分發給測試人員、收集測試裝置UDID,並將它們註冊到應用程式的設定檔中,以便您可以快速將Ad Hoc 建置引入測試人員' 雙手。

你將學到什麼

  • 如何使用 Firebase App Distribution 和fastlane向測試人員上傳和分發預先發布的 iOS 應用程式 (Ad Hoc)。
  • 如何註冊為測試人員並在測試設備上下載分散式應用程式。
  • 如何透過使用 App Distribution 的fastlane外掛程式匯出測試裝置 UDID 來快速註冊測試裝置。
  • 如何更新應用程式的設定檔並重新上傳以進行分發。

你需要什麼

  • 一個谷歌帳戶
  • 安裝了XCode 11.7+ 的 Apple 機器
  • Xcode 中內建的 Ad Hoc 預發布 iOS 應用程式
  • 付費Apple 開發者帳戶
  • 用於測試的實體 iOS 裝置。

iOS 模擬器應用程式適用於大多數 Codelab,但模擬器無法下載版本。

您仍然可以透過驗證「下載」按鈕是否出現在 App Distribution 測試器 Web 應用程式上來驗證設定是否有效。

2. 開始使用

設定快速通道

App Distribution 與fastlane集成,可讓您自動分發應用程式的預發布版本。 App Distribution 與您的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設定一些全域變數./fastlane/Appfile.包括您的應用程式 ID 和您的 Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 建立您的第一個通道並使用fastlane 的build_app操作(也稱為gym )透過將以下內容新增至您的./fastlane/Fastfile來建立您的應用程式:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. 簽署您的應用程式以進行分發。

在此 Codelab 中,您將使用get_certificates (也稱為cert )管理您自己的憑證和設定文件,它會在本機產生簽章憑證並將所有內容儲存在您的 macOS 鑰匙圈中。但是,通常情況下,您需要使用fastlanesync_code_signing 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 開發者控制台中建立應用程式:

$ fastlane produce --skip_itc

  1. 最後,透過運行通道來建立您的應用程式。

系統會提示您輸入 Apple ID、密碼(儲存在您的鑰匙圈中)和應用程式的捆綁包 ID。

$ fastlane build

如果您遇到任何問題,請參閱fastlane故障排除指南

4. 將您的應用程式上傳到 Firebase

現在您已經建立了應用程序,您可以將其上傳到 App Distribution。

建立並設定 Firebase 項目

  1. 登入 Firebase。
  2. Firebase 控制台中,建立或新增項目,然後將項目命名為「UDID Export Codelab」。

您不需要為此專案啟用 Google Analytics。

  1. 點選建立項目

將您的 iOS 應用程式新增至專案中

  1. 點擊 iOS 圖示以建立新的 Firebase iOS 應用程序,然後輸入應用程式的捆綁包 ID。

9c26c130a6c42212.png

  1. 跳過接下來的幾個步驟,然後按一下繼續控制台。稍後您將向您的應用程式添加 SDK。

您的專案和應用程式現在可以在「專案概述」頁面中找到。

66f79cc8a97fa8e9.png

啟用應用程式分發

  1. 在「發布和監控」部分下,按一下「應用程式分發」
  2. 接受條款後,按一下「開始」為您的應用程式啟用應用程式分發。

460213326c2784ae.png

fastlane中設定分發

  1. 從 iOS 專案的根目錄執行以下命令,將 App Distribution 新增至fastlane配置。

如果指令提示您一個選項,請選擇選項 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 的權限。如果他們同意,App Distribution 會收集他們的裝置資訊並透過電子郵件通知您。在本部分中,您將自己新增為測試人員來下載和測試您分發的應用程式。

將自己作為測試人員添加到版本中

  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參數firebase_app_distribution.
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

運行通道後,您新增的測試人員將收到來自 App Distribution 的邀請電子郵件,通知他們有新的可用版本。在 Firebase 控制台中,您現在可以看到在應用程式版本下新增的測試人員。

2e0fc9603b868af8.png

由於您提供了電子郵件地址,因此您將收到一封來自 Firebase App Distribution 的電子郵件,邀請您測試該應用程式。您現在是第一個測試者了!繼續執行以下部分,在您的測試設備上設定為測試人員。

註冊您的測試設備

身為測試人員,您需要在測試裝置上登入 Google 才能存取受邀測試的應用程式版本。由於您的測試版本是臨時版本,因此您還需要透過安裝 Firebase 設定檔來註冊您的測試設備。之後,您可以使用新增至裝置主畫面的 Web 剪輯從 App Distribution 測試器 Web 應用程式存取可用的版本。

  1. 在您的 iOS 測試裝置上,開啟從 Firebase App Distribution 發送的電子郵件,然後點擊「開始」連結。確保在 Safari 中開啟連結。
  2. 您現在位於 App Distribution 測試器 Web 應用程式中。在出現的頁面中,使用您的 Google 帳戶登入並點擊接受邀請。

d833407de251b89f.png

  1. 現在您可以查看您受邀參加的版本。點選其中一個版本下的註冊設備

fd141215e54a938d.png

  1. 出現提示時,下載 Firebase 設定文件,然後在「設定」應用程式中安裝該設定檔。

安裝此設定檔將為 Firebase 提供以下權限:

  • 透過收集設備的唯一設備 ID (UDID) 來註冊測試設備。

Firebase 會向 Firebase 專案的所有擁有者和編輯者發送一封電子郵件,其中包含測試設備的 UDID。

  • 將 Web Clip 安裝到測試設備的主畫面。該 Web 剪輯將開啟 App Distribution 測試器 Web 應用程序,您可以透過該應用程式安裝和存取所有測試應用程式。

在應用程式分發測試器 Web 應用程式中,您的測試裝置現已註冊以用於應用程式的發布。

fe93d649dfa25877.png

現在您已將測試設備的 UDID 共用到 Firebase,現在您可以繼續擔任開發者了。在應用程式分發儀表板測試人員標籤中,您的測試人員資訊現在顯示在您的應用程式版本下方,狀態為「已接受」:

7b9f665a63a384cf.png

在下一部分中,您將把裝置 UDID 新增到應用程式的設定檔中,然後建立適用於您的測試裝置的應用程式版本。

匯出您的測試設備 UDID

作為開發者,您將收到一封來自 Firebase 的電子郵件,其中包含測試設備的 UDID。作為一個選項,App Distribution 可讓您直接從 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 開發者控制台

  1. 建立以下通道以將 UDID 新增至 Apple 開發者控制台中的裝置列表,以便您可以使用fastlane 的register_devices操作將它們新增至您的設定檔中:
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. 在您的測試裝置上,使用電子郵件中的連結或裝置主畫面上的圖示返回 App Distribution 測試器 Web 應用程式。

當您導航到 UDID Codelab 應用程式時,您可以看到該版本已準備好下載。

爸爸6d03b6ad78746.png

  1. 如果您使用的是實體設備,請按下載,然後安裝並執行該應用程式!

7. 恭喜

現在您已經設定了 App Distribution 和fastlane來自動化您的預發布測試流程。現在,當您想要邀請其他測試人員或將他們的 UDID 新增至您的應用程式時,您只需要執行一個命令: fastlane distribute

因此,不再需要單獨從測試人員收集 UDID,也不再需要前往 Apple 開發者控制台更新裝置清單或設定檔。您甚至不需要打開 XCode!

此工作流程很容易設定為在持續整合環境中每小時或每天運行一次。

進一步閱讀