使用 fastlane 將 Android 應用分發給測試人員

本指南介紹瞭如何使用fastlane向測試人員分發 AAB 版本,fastlane 是一個開源平台,可自動構建和發布 iOS 和 Android 應用程序。它遵循Fastfile中定義的簡單指令。設置 fastlane 和Fastfile後,您可以將 App Distribution 與 fastlane 配置集成。

App Distribution 與 Google Play 的內部應用共享服務集成,以處理您上傳的 AAB 並提供針對測試人員的設備配置進行優化的 APK。分發 AAB 可以讓您執行以下操作:

  • 運行針對測試人員設備進行優化的優化 APK(由 Google Play 提供)。

  • 發現並調試特定於設備的問題。

  • 測試應用程序包功能,例如Play Feature DeliveryPlay Asset Delivery

  • 減少測試人員的下載大小。

所需權限

要將 AAB 上傳到 App Distribution,您必須將您的 Firebase 應用鏈接到 Google Play 中的應用。您必須具有執行這些操作所需的訪問級別。

如果您沒有必要的 Firebase 訪問權限,您可以要求 Firebase 項目所有者通過Firebase 控制台 IAM 設置為您分配適用的角色。如果您對訪問 Firebase 項目(包括查找或分配所有者)有疑問,請查看“Firebase 項目的權限和訪問”常見問題解答

下表適用於將 Firebase 應用鏈接到 Google Play 中的應用以及上傳 AAB。

Firebase 控制台中的操作所需的 IAM 權限默認情況下包含所需權限的 IAM 角色其他所需角色
將 Firebase 應用關聯到 Google Play 中的應用firebase.playLinks.update以下角色之一:管理員身份訪問 Google Play 開發者帳戶
將 AAB 上傳到應用程序分發firebaseappdistro.releases.update以下角色之一:––

在你開始之前

  1. 如果您尚未將 Firebase 添加到您的 Android 項目中,請將其添加到您的 Android 項目中。在此工作流程結束時,您的 Firebase 項目中將擁有一個 Firebase Android 應用。

    如果您沒有使用任何其他 Firebase 產品,則只需創建一個項目並註冊您的應用。如果您決定使用其他產品,請務必完成將 Firebase 添加到您的 Android 項目中的所有步驟。

  2. 要創建指向 Google Play 的 Firebase 鏈接並上傳 AAB,請確保您的應用滿足以下要求:

    • Google Play 中的應用程序和 Firebase Android 應用程序均使用相同的包名稱註冊。

    • Google Play 中的應用程序在應用程序儀表板上設置,並分發到 Google Play 軌道之一(內部測試、封閉測試、開放測試或生產)。

    • 該應用在 Google Play 中的審核已完成並已發布。如果應用程序狀態列顯示以下狀態之一,則您的應用程序已發布:內部測試(不是草稿內部測試)、封閉測試、開放測試或生產。

  3. 將您的 Firebase Android 應用程序鏈接到您的 Google Play 開發者帳戶:

    1. 在 Firebase 控制台中,轉到您的項目設置,然後選擇集成選項卡。

    2. Google Play卡上,點擊鏈接
      如果您已有 Google Play 鏈接,請點擊“管理”

    3. 按照屏幕上的說明啟用應用程序分發集成並選擇要鏈接到 Google Play 的 Firebase Android 應用程序。

    了解有關鏈接到 Google Play 的更多信息。

步驟 1. 設置快速通道

  1. 安裝並設置 fastlane

  2. 要將 App Distribution 添加到 fastlane 配置中,請從 Android 項目的根目錄運行以下命令:

    fastlane add_plugin firebase_app_distribution

    如果命令提示您一個選項,請選擇Option 3: RubyGems.org

步驟 2. 使用 Firebase 進行身份驗證

在使用 fastlane 插件之前,您必須首先通過以下方式之一向您的 Firebase 項目進行身份驗證。默認情況下,如果不使用其他身份驗證方法,fastlane 插件會從 Firebase CLI 查找憑據。

步驟 3. 設置 Fastfile 並分發您的應用程序

  1. ./fastlane/Fastfile通道中,添加firebase_app_distribution塊。使用以下參數來配置分發:
    firebase_app_distribution 參數
    app

    必需:您應用的 Firebase 應用 ID。您可以在 Firebase 控制台的“常規設置”頁面上找到應用程序 ID。

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    當您使用 Firebase CLI 對 CI 環境進行身份驗證時打印的刷新令牌(有關詳細信息,請參閱將 CLI 與 CI 系統結合使用)。

    service_credentials_file

    您的 Google 服務帳戶 json 文件的路徑。請參閱上文了解如何使用服務帳戶憑據進行身份驗證

    android_artifact_type

    指定 Android 文件類型(APK 或 AAB)。

    android_artifact_path

    替換apk_path (已棄用)。您要上傳的 APK 或 AAB 文件的絕對路徑。如果未指定,fastlane 將從生成文件的通道確定文件的位置。

    release_notes
    release_notes_file

    此版本的發行說明。

    您可以直接指定發行說明:

    release_notes: "Text of release notes"

    或者,指定純文本文件的路徑:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    您想要邀請的測試人員的電子郵件地址。

    您可以將測試人員指定為以逗號分隔的電子郵件地址列表:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    或者,您可以指定包含以逗號分隔的電子郵件地址列表的純文本文件的路徑:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    您想要邀請的測試人員組(請參閱管理測試人員)。組指定使用組別名,您可以在 Firebase 控制台中查找。

    您可以將組指定為以逗號分隔的列表:

    groups: "qa-team, trusted-testers"

    或者,您可以指定包含以逗號分隔的組名稱列表的純文本文件的路徑:

    groups_file: "/path/to/groups.txt"
    debug

    一個布爾標誌。您可以將其設置為true以打印詳細的調試輸出。

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(task: "bundle", ...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!",
            android_artifact_type: "AAB"
        )
    end
end

要使構建可供測試人員使用,請運行您的通道:

fastlane <lane>

該操作的返回值是代表上傳版本的哈希值。使用lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]也可以使用此哈希。有關此哈希中的可用字段的更多信息,請參閱REST API 文檔

fastlane 插件在發布上傳後輸出以下鏈接。這些鏈接可幫助您管理二進製文件並確保測試人員和其他開發人員擁有正確的版本:

  • 顯示單個版本的 Firebase 控制台的鏈接。您可以與組織中的其他開發人員共享此鏈接。
  • 測試人員體驗(​​Android 本機應用程序)中的版本鏈接,可讓測試人員查看發行說明並將應用程序安裝到其設備上。測試人員需要訪問該版本才能使用該鏈接。
  • 直接下載並安裝應用程序二進製文件(APK 或 AAB 文件)的簽名鏈接。該鏈接在一小時後過期。

分發構建後,它可以在 Firebase 控制台的應用程序分發儀表板中使用 150 天。當構建版本距到期日還有 30 天時,控制台以及測試人員在其測試設備上的構建版本列表中會顯示到期通知。

之前沒有被邀請測試應用程序的測試人員會收到開始測試的電子郵件邀請。現有測試人員會收到新版本已準備好測試的電子郵件通知。要了解如何安裝測試應用程序,請參閱測試儀設置指南。您可以監控每個測試人員的狀態,以確定他們是否接受了邀請以及是否在 Firebase 控制台中下載了應用。

(可選)要在每次在 App Distribution 中創建新版本時自動增加內部版本號,您可以使用firebase_app_distribution_get_latest_release操作,例如, increment_version_code fastlane 插件。以下代碼提供瞭如何自動增加內部版本號的示例:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

要了解有關firebase_app_distribution_get_latest_release操作的更多信息,請參閱獲取有關應用最新版本的信息

步驟 4(可選)。管理髮行版的測試人員

您可以使用Fastfile文件或直接運行 fastlane 操作在項目或組中添加和刪除測試人員。運行操作會直接覆蓋Fastfile中設置的值。

將測試人員添加到您的 Firebase 項目後,您可以將他們添加到單獨的版本中。從 Firebase 項目中移除的測試人員將無法再訪問您項目中的版本,但他們可能會在一段時間內保留對您版本的訪問權限。

如果您有大量測試人員,您應該考慮使用小組。

使用Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

運行快速通道操作

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

您還可以使用--file="/path/to/testers.txt而不是--emails指定測試人員。

firebase_app_distribution_add_testersfirebase_app_distribution_remove_testers任務還接受以下參數:

  • project_name :您的 Firebase 項目編號。
  • group_alias (可選):如果指定,測試人員將添加到指定的組中(或從指定的組中刪除)。
  • service_credentials_file :Google 服務憑證文件的路徑。
  • firebase_cli_token :Firebase CLI 的身份驗證令牌。

service_credentials_filefirebase_cli_token與上傳操作使用的參數相同。

步驟 5(可選)。獲取有關您的應用最新版本的信息

您可以使用firebase_app_distribution_get_latest_release操作在 App Distribution 中獲取有關應用程序最新版本的信息,包括應用程序版本信息、發行說明和創建時間。用例包括自動增加版本並繼承先前版本的發行說明。

該操作的返回值是代表最新版本的哈希值。使用lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]也可以使用此哈希值。有關此哈希中的可用字段的更多信息,請參閱REST API 文檔

參數

firebase_app_distribution_get_latest_release 參數
app

必需:您應用的 Firebase 應用 ID。您可以在 Firebase 控制台的“常規設置”頁面上找到應用程序 ID。

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

當您使用 Firebase CLI 對 CI 環境進行身份驗證時打印的刷新令牌(有關詳細信息,請參閱將 CLI 與 CI 系統結合使用)。

service_credentials_file

您的 Google 服務帳戶 json 文件的路徑。請參閱上文了解如何使用服務帳戶憑據進行身份驗證

debug

一個布爾標誌。您可以將其設置為true以打印詳細的調試輸出。

下一步