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

安裝 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 Keychain 中。但是,通常情況下,您會希望使用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. 最後,通過運行 lane 構建您的應用程序。

系統將提示您輸入 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 應用程序,然後輸入您的應用程序的 bundle 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. 運行以下命令將 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 才能訪問您受邀測試的應用版本。由於您的測試版本是 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 測試器網絡應用程序中,您的測試設備現在已註冊您的應用程序版本。

fe93d649dfa25877.png

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

7b9f665a63a384cf.png

在下一節中,您將把設備 UDID 添加到您的應用程序的配置文件中,然後構建一個適用於您的測試設備的應用程序版本。

導出您的測試儀設備 UDID

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

UDID 也可以使用fastlane從命令行導出,您將在下一節中執行此操作。

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

重新運行 lane 以構建和上傳

現在,您將使用新通道更新您的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!

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

延伸閱讀