使用 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"
    test_devices
    test_devices_file

    以下分發類型是自動測試程式 beta 功能的一部分。

    您想要將建置分發到的測試設備(請參閱自動化測試)。

    您可以將測試設備指定為以分號分隔的測試設備清單:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    或者,您可以指定包含以分號分隔的測試設備清單的純文字檔案的路徑:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    自動化測試期間使用的自動登入使用者名稱。

    test_password
    test_password_file

    自動化測試時使用的自動登入密碼。

    或者,您可以指定包含密碼的純文字檔案的路徑:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    自動化測試期間使用的自動登入的使用者名字段的資源名稱。

    test_password_resource

    自動化測試期間使用的自動登入密碼欄位的資源名稱。

    test_non_blocking

    非同步運行自動化測試。造訪 Firebase 控制台以取得自動測試結果。

    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以列印詳細的偵錯輸出。

下一步