使用 Gradle 將 Android 應用程式分發給測試人員

您可以使用 App Distribution Gradle 外掛程式將 App Distribution 整合到您的 Android 建置流程中。該插件可讓您在應用程式的 Gradle 檔案中指定測試人員和發行說明,從而為應用程式的不同建置類型和變體配置發行版。

本指南說明如何使用 App Distribution Gradle 外掛程式向測試人員分發 Android App Bundle (AAB)。

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. 設定您的 Android 項目

  1. 根層級(專案層級) Gradle 檔案( <project>/build.gradle.kts<project>/build.gradle )中,新增 App Distribution Gradle 外掛程式作為依賴項:

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.1" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "4.2.0" apply false
    }
    

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.1' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '4.2.0' apply false
    }
    
  2. 模組(應用程式層級) Gradle 檔案(通常<project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle )中,新增 App Distribution Gradle 外掛程式:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }
    

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
    
  3. 如果您位於公司代理或防火牆後面,請新增下列Java 系統屬性,使 App Distribution 能夠將您的發行版上傳到 Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

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

在使用 Gradle 外掛程式之前,您必須先透過以下方式之一向您的 Firebase 專案進行身份驗證。預設情況下,如果不使用其他驗證方法,Gradle 外掛程式會從 Firebase CLI 尋找憑證。

步驟 3. 設定您的分發屬性

在您的模組(應用程式層級) Gradle 檔案(通常為<project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle )中,透過新增至少以下內容來設定App Distribution一個firebaseAppDistribution部分。

例如,要將release分發給測試人員,請按照以下說明操作:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

您可以針對建置類型和產品風格設定 App Distribution。

例如,要以「演示」和「完整」產品風格分發debugrelease版本,請遵循以下說明:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

使用以下參數來配置分發:

應用程式分發建置參數
appId

您套用的 Firebase 應用程式 ID。僅當您未安裝 Google Services Gradle 外掛程式時才需要。您可以在google-services.json檔案或 Firebase 控制台的「常規設定」頁面上找到應用程式 ID。 build.gradle檔案中的值會覆寫google-services插件輸出的值。

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

服務帳戶私鑰 JSON 檔案的路徑。僅當您使用服務帳戶驗證時才需要。

artifactType

指定您的應用程式的檔案類型。可以設定為"AAB""APK"

artifactPath

您要上傳的 APK 或 AAB 檔案的絕對路徑。

releaseNotesreleaseNotesFile

此版本的發行說明。

您可以直接指定發行說明,也可以指定純文字檔案的路徑。

testerstestersFile

您想要向其分發版本的測試人員的電子郵件地址。

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

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

或者,您可以指定包含以逗號分隔的電子郵件地址清單的檔案的路徑:

testersFile="/path/to/testers.txt"
groupsgroupsFile

您想要將建置分發到的測試人員群組(請參閱管理測試人員)。群組指定使用組別名,您可以在 Firebase 應用程式分發控制台的「測試人員」標籤中找到它。

您可以將群組指定為以逗號分隔的組別名稱清單:

groups="qa-team, android-testers"

或者,您可以指定包含逗號分隔的群組別名清單的檔案的路徑:

groupsFile="/path/to/tester-groups.txt"
stacktrace

列印出使用者異常的堆疊追蹤。這在調試問題時很有幫助。

testDevicestestDevicesFile

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

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

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

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

或者,您可以指定包含分號分隔的裝置規格清單的檔案的路徑:

testDevicesFile="/path/to/testDevices.txt"
testUsername

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

testPassword

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

testUsernameResource

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

testPasswordResource

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

testNonBlocking

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

步驟 4. 將您的應用程式分發給測試人員

  1. 最後,要打包您的測試應用程式並邀請測試人員,請使用專案的 Gradle 包裝器建立目標BUILD-VARIANTappDistributionUpload BUILD-VARIANT ,其中BUILD-VARIANT是您在上一個步驟中配置的可選產品風格和構建類型。有關產品風格的更多信息,請參閱配置構建變體

    例如,要使用release建置變體分發您的應用程序,請執行以下命令:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    或者,如果您使用Google 帳戶進行了身份驗證,但未在 Gradle 建置檔案中提供憑證,請包含FIREBASE_TOKEN變數:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. 您也可以透過以--<property-name>=<property-value>形式傳遞命令列參數來覆寫build.gradle檔案中設定的值。例如:

    • 若要將偵錯版本上傳到 App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • 若要邀請其他測試人員或從 Firebase 專案中刪除現有測試人員,請執行下列操作:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      

      將測試人員新增至您的 Firebase 專案後,您可以將他們新增到單獨的版本中。被刪除的測試人員將無法再存取您專案中的版本,但仍可能在一段時間內保留對您的版本的存取權限。

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

    appDistributionAddTestersappDistributionRemoveTesters任務也接受以下參數:

    • projectNumber :您的 Firebase 專案編號。

    • serviceCredentialsFile :Google 服務憑證檔案的路徑。這與上傳操作使用的參數相同。

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

  • firebase_console_uri - 顯示單一版本的 Firebase 控制台的連結。您可以與組織中的其他開發人員分享此連結。
  • testing_uri - 測試人員體驗(​​Android 本機應用程式)中版本的鏈接,可讓測試人員查看發行說明並將應用程式安裝到其裝置上。測試人員需要存取該版本才能使用該連結。
  • binary_download_uri - 直接下載並安裝應用程式二進位檔案(APK 或 AAB 檔案)的簽章連結。該連結在一小時後過期。

分發建置後,它會在 Firebase 控制台的應用程式分發儀表板中可用 150 天(五個月)。當建置版本距離到期日還有 30 天時,控制台和測試人員在其測試設備上的建置版本清單中都會顯示到期通知。

未受邀測試應用程式的測試人員會收到開始測試的電子郵件邀請,現有測試人員會收到新版本已準備好測試的電子郵件通知(請閱讀測試人員設定指南,以了解如何安裝測試應用程式的說明)。您可以在 Firebase 控制台中監控每個測試人員的狀態 - 他們是否接受邀請以及他們是否下載了應用程式。

測試人員有 30 天的時間接受邀請來測試該應用程序,然後該應用程式就會過期。當邀請在 5 天後到期時,Firebase 控制台中發布的測試人員旁邊會顯示到期通知。可以透過使用測試者行上的下拉式選單重新發送邀請來更新邀請。

下一步