您可以使用 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 Delivery和Play 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 | 以下角色之一: | –– |
在你開始之前
如果您尚未將 Firebase 添加到您的 Android 項目中,請將其添加到您的 Android 項目中。在此工作流程結束時,您的 Firebase 項目中將擁有一個 Firebase Android 應用。
如果您沒有使用任何其他 Firebase 產品,則只需創建一個項目並註冊您的應用。如果您決定使用其他產品,請務必完成將 Firebase 添加到您的 Android 項目中的所有步驟。
要創建指向 Google Play 的 Firebase 鏈接並上傳 AAB,請確保您的應用滿足以下要求:
Google Play 中的應用程序和 Firebase Android 應用程序均使用相同的包名稱註冊。
Google Play 中的應用程序在應用程序儀表板上設置,並分發到 Google Play 軌道之一(內部測試、封閉測試、開放測試或生產)。
該應用在 Google Play 中的審核已完成並已發布。如果應用程序狀態列顯示以下狀態之一,則您的應用程序已發布:內部測試(不是草稿內部測試)、封閉測試、開放測試或生產。
將您的 Firebase Android 應用鏈接到您的 Google Play 開發者帳戶:
在 Firebase 控制台中,轉到您的
項目設置,然後選擇集成選項卡。在Google Play卡上,點擊鏈接。
如果您已有 Google Play 鏈接,請點擊“管理” 。按照屏幕上的說明啟用應用程序分發集成並選擇要鏈接到 Google Play 的 Firebase Android 應用程序。
了解有關鏈接到 Google Play 的更多信息。
步驟 1. 設置您的 Android 項目
在根級別(項目級別) Gradle 文件(
<project>/build.gradle.kts
或<project>/build.gradle
)中,添加 App Distribution Gradle 插件作為依賴項:Kotlin
plugins { // ... id("com.android.application") version "7.2.0" apply false // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.3.15" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "4.0.0" apply false }
Groovy
plugins { // ... id 'com.android.application' version '7.2.0' apply false // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.3.15' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '4.0.0' apply false }
在模塊(應用程序級) 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' }
如果您位於公司代理或防火牆後面,請添加以下Java 系統屬性,使 App Distribution 能夠將您的發行版上傳到 Firebase:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
步驟 2. 使用 Firebase 進行身份驗證
在使用 Gradle 插件之前,您必須首先通過以下方式之一向您的 Firebase 項目進行身份驗證。默認情況下,如果不使用其他身份驗證方法,Gradle 插件會從 Firebase CLI 查找憑據。
使用服務帳戶進行身份驗證允許您在持續集成 (CI) 系統中靈活地使用該插件。有兩種方式提供服務帳戶憑據:
- 將您的服務帳戶密鑰文件傳遞給
build.gradle
。如果您的構建環境中已有服務帳戶密鑰文件,您可能會發現此方法很方便。 - 設置環境變量
GOOGLE_APPLICATION_CREDENTIALS
以指向您的服務帳戶密鑰文件。如果您已經為其他 Google 服務(例如 Google Cloud)配置了應用程序默認憑據 (ADC),您可能更喜歡此方法。
要使用服務帳戶憑據進行身份驗證:
- 在Google Cloud Console 上,選擇您的項目並創建一個新的服務帳戶。
- 添加Firebase 應用程序分發管理員角色。
- 創建私有 json 密鑰並將密鑰移動到構建環境可訪問的位置。請務必將此文件保存在安全的地方,因為它授予管理員對 Firebase 項目中的 App Distribution 的訪問權限。
- 如果您在 2019 年 9 月 20 日之後創建應用,請跳過此步驟:在 Google API 控制台中,啟用Firebase App Distribution API。出現提示時,選擇與您的 Firebase 項目同名的項目。
提供或找到您的服務帳戶憑據:
- 要向 Gradle 傳遞您的服務帳戶密鑰,請在
build.gradle
文件中將屬性serviceCredentialsFile
設置為私鑰 JSON 文件。 要使用 ADC 查找您的憑據,請將環境變量
GOOGLE_APPLICATION_CREDENTIALS
設置為私鑰 JSON 文件的路徑。例如:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
有關使用 ADC 進行身份驗證的更多信息,請閱讀向您的應用程序提供憑據。
- 要向 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。
例如,要以“演示”和“完整”產品風格分發debug
和release
版本,請遵循以下說明:
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 插件時才需要。您可以在 appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | 服務帳戶私鑰 JSON 文件的路徑。僅當您使用服務帳戶身份驗證時才需要。 |
artifactType | 指定您的應用程序的文件類型。可以設置為 |
artifactPath | 您要上傳的 APK 或 AAB 文件的絕對路徑。 |
releaseNotes 或releaseNotesFile | 此版本的發行說明。 您可以直接指定發行說明,也可以指定純文本文件的路徑。 |
testers 或testersFile | 您想要向其分發版本的測試人員的電子郵件地址。 您可以將測試人員指定為以逗號分隔的電子郵件地址列表: testers="ali@example.com, bri@example.com, cal@example.com" 或者,您可以指定包含以逗號分隔的電子郵件地址列表的文件的路徑: testersFile="/path/to/testers.txt" |
groups 或groupsFile | 您想要將構建分發到的測試人員組(請參閱管理測試人員)。組指定使用 您可以將組指定為以逗號分隔的組別名列表: groups="qa-team, android-testers" 或者,您可以指定包含逗號分隔的組別名列表的文件的路徑: groupsFile="/path/to/tester-groups.txt" |
stacktrace | 打印出用戶異常的堆棧跟踪。這在調試問題時很有幫助。 |
步驟 4. 將您的應用程序分發給測試人員
最後,要打包您的測試應用程序並邀請測試人員,請使用項目的 Gradle 包裝器構建目標
BUILD-VARIANT
和appDistributionUpload 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
您還可以通過以
--<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
指定測試人員。appDistributionAddTesters
和appDistributionRemoveTesters
任務還接受以下參數:projectNumber
:您的 Firebase 項目編號。serviceCredentialsFile
:Google 服務憑證文件的路徑。這與上傳操作使用的參數相同。
Gradle 插件在發布上傳後輸出以下鏈接。這些鏈接可幫助您管理二進製文件並確保測試人員和其他開發人員擁有正確的版本:
-
firebase_console_uri
- 顯示單個版本的 Firebase 控制台的鏈接。您可以與組織中的其他開發人員共享此鏈接。 -
testing_uri
- 測試人員體驗(Android 本機應用程序)中版本的鏈接,可讓測試人員查看發行說明並將應用程序安裝到其設備上。測試人員需要訪問該版本才能使用該鏈接。 -
binary_download_uri
- 直接下載並安裝應用程序二進製文件(APK 或 AAB 文件)的簽名鏈接。該鏈接在一小時後過期。
分發構建後,它會在 Firebase 控制台的應用程序分發儀表板中可用 150 天(五個月)。當構建版本距到期日還有 30 天時,控制台和測試人員在其測試設備上的構建版本列表中都會顯示到期通知。
未受邀測試應用程序的測試人員會收到開始測試的電子郵件邀請,現有測試人員會收到新版本已準備好測試的電子郵件通知(請閱讀測試人員設置指南,了解如何安裝測試應用程序的說明)。您可以在 Firebase 控制台中監控每個測試人員的狀態 - 他們是否接受邀請以及他們是否下載了應用程序。
測試人員有 30 天的時間接受邀請來測試該應用程序,然後該應用程序就會過期。當邀請在 5 天后到期時,Firebase 控制台中發布的測試人員旁邊會顯示到期通知。可以通過使用測試者行上的下拉菜單重新發送邀請來更新邀請。
下一步
實施應用內反饋,使測試人員可以輕鬆發送有關您的應用的反饋(包括屏幕截圖)。
了解當您的應用程序的新版本可供安裝時,如何向測試人員顯示應用程序內警報。
訪問Android App Bundle Codelab,了解如何逐步分發應用程序包版本。