您可以使用 App Distribution Gradle 插件将 App Distribution 集成到您的 Android 构建过程中。该插件允许您在应用程序的build.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 上传到 App Distribution | firebaseappdistro.releases.update | 以下角色之一: | –– |
在你开始之前
如果您还没有,请将 Firebase 添加到您的 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 控制台中,转到您的
Project settings ,然后选择Integrations选项卡。在Google Play卡片上,点击链接。
如果您已有指向 Google Play 的链接,请点击管理。按照屏幕上的说明启用 App Distribution 集成并选择要链接到 Google Play 的 Firebase Android 应用程序。
了解有关链接到 Google Play 的更多信息。
步骤 1. 设置您的 Android 项目
在您的根级别(项目级别) Gradle 文件(
或<project>/build.gradle
)中,将 App Distribution Gradle 插件添加为 buildscript 依赖项:<project>/build.gradle.kts 时髦的
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath 'com.android.tools.build:gradle:7.2.0' // Make sure that you have the Google services Gradle plugin dependency classpath 'com.google.gms:google-services:4.3.15' // Add the dependency for the App Distribution Gradle plugin classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0' } }
科特林
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath("com.android.tools.build:gradle:7.2.0") // Make sure that you have the Google services Gradle plugin dependency classpath("com.google.gms:google-services:4.3.15") // Add the dependency for the App Distribution Gradle plugin classpath("com.google.firebase:firebase-appdistribution-gradle:3.2.0") } }
在您的模块(应用程序级) Gradle 文件(通常是
或<project>/<app-module>/build.gradle
中,添加 App Distribution Gradle 插件:<project>/<app-module>/build.gradle.kts 时髦的
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' }
科特林
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 App Distribution Admin角色。
- 创建一个 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 文件(通常是
或
中,通过至少添加配置 App Distribution一个firebaseAppDistribution
部分。
例如,要将release
版本分发给测试人员,请遵循以下说明:
时髦的
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
科特林
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution 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
版本,请遵循以下说明:
时髦的
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" } } } // ... }
科特林
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" } } } // ... }
使用以下参数配置分发:
应用分发构建参数 | |
---|---|
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 控制台的 App Distribution 仪表板中可用 150 天(五个月)。当构建距离到期还有 30 天时,控制台和测试人员在其测试设备上的构建列表中都会显示到期通知。
未受邀测试应用程序的测试人员会收到开始测试的电子邮件邀请,而现有测试人员会收到新版本已准备好进行测试的电子邮件通知(阅读测试人员设置指南,了解有关如何安装测试应用程序的说明)。您可以在 Firebase 控制台中监控每个测试人员的状态——他们是否接受了邀请以及是否下载了应用程序。
测试人员有 30 天的时间接受邀请,在邀请到期前测试该应用。当邀请还有 5 天到期时,Firebase 控制台中发布的测试人员旁边会显示到期通知。可以通过使用测试人员行上的下拉菜单重新发送邀请来续订邀请。
下一步
访问Android App Bundle 代码实验室,了解如何逐步分发 App Bundle 版本。
了解使用 CI/CD 将 Android 应用分发给 QA 测试人员的最佳实践。