Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

本文檔介紹瞭如何使用fastlane將 APK 構建分發給測試人員,fastlane 是一個開源平台,可自動構建和發布 iOS 和 Android 應用程序。本文檔遵循Fastfile中定義的說明。設置 fastlane 和Fastfile後,您可以將 App Distribution 與您的 fastlane 配置集成。

在你開始之前

如果您還沒有,請將 Firebase 添加到您的 Android 項目中

如果您不使用任何其他 Firebase 產品,則只需創建一個項目並註冊您的應用程序。但是,如果您決定將來使用其他產品,請務必完成上面鏈接頁面上的所有步驟。

步驟 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 控制台的常規設置頁面上找到應用程序 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(...)
        # 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 文檔

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

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

分發構建後,它會在 Firebase 控制台的 App Distribution 儀表板中可用 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 an app release.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

運行快速通道操作

fastlane run firebase_app_distribution_add_testers emails:"foo@google.com,bar@google.com"

fastlane run firebase_app_distribution_remove_testers emails:"foo@google.com,bar@google.com"

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

firebase_app_distribution_add_testersfirebase_app_distribution_remove_testers任務也接受以下參數:

  • project_name :您的 Firebase 項目編號。
  • 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以打印詳細的調試輸出。

下一步