您可以使用 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.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 }
在模組(應用程式層級) 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 控制台上,選擇您的專案並建立新的服務帳號。
- 新增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" |
testDevices 或testDevicesFile | 以下分發類型是自動測試程式 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 或testPasswordFile | 自動化測試時使用的自動登入密碼。 或者,您可以指定包含密碼的純文字檔案的路徑: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | 自動化測試期間使用的自動登入的使用者名字段的資源名稱。 |
testPasswordResource | 自動化測試期間使用的自動登入密碼欄位的資源名稱。 |
testNonBlocking | 非同步運行自動化測試。造訪 Firebase 控制台以取得自動測試結果。 |
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,了解如何逐步分發應用程式套件版本。