使用 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!

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

進一步閱讀