使用 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 上傳至 App Distribution firebaseappdistro.releases.update 下列其中一個角色: ––

事前準備

  1. 如果您尚未將 Firebase 新增至 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. 按照畫面上的指示啟用App Distribution 整合功能,並選取要連結至 Google Play 的 Firebase Android 應用程式。

    進一步瞭解如何連結至 Google Play

步驟 1:設定 fastlane

  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 控制台的「General Settings」(一般設定) 頁面中找到應用程式 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 檔案)。連結會在 1 小時後失效。

發布版本後,您可以在App Distribution控制台的Firebase資訊主頁中查看版本,保存期限為 150 天。 如果建構版本即將在 30 天後過期,控制台和測試人員測試裝置上的建構版本清單中,都會顯示過期通知。

如果測試人員先前未受邀測試應用程式,他們會收到電子郵件邀請,現有測試人員會收到電子郵件通知,告知他們已可測試新版本。如要瞭解如何安裝測試應用程式,請參閱測試人員設定指南。您可以在 Firebase 控制台中監控每位測試人員的狀態,判斷他們是否接受邀請及下載應用程式。

(選用) 如要在應用程式發布中建立新版本時自動遞增建構版本號碼,可以使用 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 動作

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_tokenFirebase 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 控制台的「General Settings」(一般設定) 頁面中找到應用程式 ID。

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

使用 Firebase CLI 驗證 CI 環境時列印的重新整理權杖 (詳情請參閱「將 CLI 與 CI 系統搭配使用」)。

service_credentials_file

Google 服務帳戶 JSON 檔案的路徑。如要瞭解如何使用服務帳戶憑證進行驗證,請參閱上文。

debug

布林值標記。您可以將此值設為 true,列印詳細的偵錯輸出內容。

後續步驟