使用 Fastlane 將 Android 應用程式發布給測試人員

本文說明如何使用 Fastlane 將 APK 版本發布給測試人員。fastlane 是會自動建構及發布 iOS 和 Android 應用程式的開放原始碼平台。本文件遵循 Fastfile 中定義的指示。設定速線和 Fastfile 後,即可將應用程式發布功能與快速車道設定整合。

事前準備

如果您尚未將 Firebase 新增至 Android 專案,請先完成這項操作。

如果您不使用其他 Firebase 產品,則只需建立專案並註冊應用程式即可。不過,如果日後決定使用其他產品,請務必完成上方連結頁面列出的所有步驟。

步驟 1:設定 Fastlane

  1. 安裝並設定 Fastlane

  2. 如要將應用程式發布功能新增至 Quicklane 設定,請從 Android 專案的根目錄執行下列指令:

    fastlane add_plugin firebase_app_distribution

    如果指令提示您選擇選項,請選取 Option 3: RubyGems.org

步驟 2:透過 Firebase 驗證

您必須先透過下列其中一種方式,以 Firebase 專案進行驗證,才能使用 Quicklane 外掛程式。根據預設,如未採用其他驗證方法,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 驗證持續整合環境時,畫面上顯示的重新整理權杖 (詳情請參閱「搭配使用 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(...)
        # 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!"
        )
    end
end

如要開放測試人員使用版本,請執行以下操作:

fastlane <lane>

動作的傳回值是代表已上傳版本的雜湊。也可透過 lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] 使用這個雜湊。如要進一步瞭解這個雜湊中的可用欄位,請參閱 REST API 說明文件

Quicklane 外掛程式會在發布版本上傳後輸出下列連結。這些連結可協助您管理二進位檔,並確保測試人員和其他開發人員擁有正確的版本:

  • 顯示單一版本的 Firebase 控制台連結。您可以與貴機構中的其他開發人員分享這個連結。
  • 測試人員體驗 (Android 原生應用程式) 中的版本連結,可讓測試人員查看版本資訊,並在裝置上安裝應用程式。測試人員需要存取版本才能使用該連結。
  • 直接下載並安裝應用程式二進位檔 (APK 或 AAB 檔案) 的已簽署連結。連結會在一小時後失效。

版本發布後,在 Firebase 控制台的「應用程式發布」資訊主頁會顯示 150 天。當建構作業過期 30 天時,主控台和測試人員的測試裝置上的版本清單中會顯示到期通知。

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

(選用) 如要在應用程式發布中每次建立新版本時,自動遞增建構編號,可以使用 firebase_app_distribution_get_latest_release 動作 (例如 increment_version_codeFastlane 外掛程式)。以下程式碼示範如何自動遞增建構編號:

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 檔案或直接執行 Quicklane 動作,為專案或群組新增和移除測試人員。直接執行動作會覆寫 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

執行 Quicklane 動作

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 動作,在應用程式發布中擷取應用程式最新版本的相關資訊,包括應用程式版本資訊、版本資訊和建立時間。使用案例包括自動增加版本,並保留先前版本的版本資訊。

動作的傳回值是代表最新版本的雜湊。也可透過 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 驗證持續整合環境時,畫面上顯示的重新整理權杖 (詳情請參閱「搭配使用 CLI 與 CI 系統」)。

service_credentials_file

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

debug

布林值標記。您可以將這個屬性設為 true,顯示詳細的偵錯輸出內容。

後續步驟