使用 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 模擬器應用程序適用於大多數代碼實驗室,但模擬器無法下載版本。

您仍然可以通過驗證“下載”按鈕是否出現在 App Distribution 測試程序 Web 應用程序上來驗證設置是否有效。

2. 開始

設置快車道

App Distribution 與fastlane集成,使您能夠自動分發應用程序的預發布版本。 App Distribution 與您的fastlane配置集成。

  1. 安裝並設置fastlane
  2. 在設置過程中在項目的根目錄中運行fastlane init ,然後選擇“手動設置”。您將看到一個名為fastlane的子目錄,其中包含一個FastfileAppfilePluginfile ,您將使用它們來配置fastlane

3. 使用 fastlane 構建您的應用

構建您的應用

  1. ./fastlane/Appfile.中為fastlane設置一些全局變量。包括您的應用程序 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 鑰匙串中。但是,通常情況下,您需要使用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 開發者控制台中創建您的應用:

$ 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. 跳過接下來的幾個步驟,然後單擊Continue to console 。稍後您將向您的應用添加 SDK。

您的項目和應用程序現在可在“項目概述”頁面中使用。

66f79cc8a97fa8e9.png

啟用應用分發

  1. 在 Release & Monitor 部分下,單擊App Distribution
  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. 運行以下命令:

$ fastlane run firebase_app_distribution_login

  1. 當命令打印身份驗證鏈接時,請在瀏覽器中打開該鏈接。
  2. 出現提示時,登錄您的 Google 帳戶並授予訪問您的 Firebase 項目的權限。

從登錄瀏覽器複製生成的代碼並將其粘貼到命令行中。

  1. 然後登錄操作會打印一個刷新令牌,App Distribution 插件使用該令牌向 Firebase 進行身份驗證:

dbd61c40c4131158.png

  1. 通過設置FIREBASE_TOKEN環境變量傳遞令牌:

$ export FIREBASE_TOKEN= <token>

分發您的應用程序

您現在已準備好分發您的應用程序。

  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. 在您的firebase_app_id頂部的 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 才能訪問受邀測試的應用版本。由於您的測試版本是 Ad Hoc 版本,因此您還需要通過安裝 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 剪輯打開 App Distribution 測試器 Web 應用程序,它允許您安裝和訪問所有測試應用程序。

在 App Distribution 測試程序 Web 應用程序中,您的測試設備現在已為您的應用程序版本註冊。

fe93d649dfa25877.png

現在您已將測試設備的 UDID 共享給 Firebase,您現在可以恢復為開發人員。在App Distribution 儀表板Testers 選項卡中,您的測試人員信息現在顯示在您的應用發布下,狀態為“已接受”:

7b9f665a63a384cf.png

在下一部分中,您會將設備 UDID 添加到應用的配置文件中,然後構建適用於您的測試設備的應用版本。

導出您的測試儀設備 UDID

作為開發人員,您會收到一封來自 Firebase 的電子郵件,其中包含測試設備的 UDID。作為一個選項,App Distribution 可以讓您直接從 Firebase 控制台將它們導出為原始文本文件,從而輕鬆地一次收集多個新設備 UDID。

  1. 要導出所有 UDID,請打開Testers & Groups選項卡。

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. 設置一個新通道,使用 App Distribution 插件的 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 應用程序時,您可以看到該版本已準備好下載。

dad6d03b6ad78746.png

  1. 如果您使用的是物理設備,請按下載,然後安裝並運行該應用程序!

7. 恭喜

您現在已配置 App Distribution 和fastlane以自動化您的預發布測試過程。現在,當您想邀請其他測試人員或將他們的 UDID 添加到您的應用程序時,您只需要運行一個命令: fastlane distribute

因此,無需再單獨從測試人員那裡收集 UDID,也無需前往 Apple 開發人員控制台更新設備列表或配置文件。你甚至不需要打開 XCode!

此工作流易於設置為在您的持續集成環境中每小時或每天運行一次。

進一步閱讀