本指南介绍如何使用fastlane将 AAB 构建分发给测试人员,fastlane 是一个开源平台,可自动构建和发布 iOS 和 Android 应用程序。它遵循Fastfile
中定义的简单指令。设置 fastlane 和Fastfile
,您可以将 App Distribution 与您的 fastlane 配置集成。
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. 设置 fastlane
要将 App Distribution 添加到您的 fastlane 配置,请从您的 Android 项目的根目录运行以下命令:
fastlane add_plugin firebase_app_distribution
如果命令提示您一个选项,请选择
Option 3: RubyGems.org
。
第 2 步:使用 Firebase 进行身份验证
在使用 fastlane 插件之前,您必须先通过以下方式之一对您的 Firebase 项目进行身份验证。默认情况下,如果没有使用其他身份验证方法,fastlane 插件会从 Firebase CLI 中查找凭据。
使用服务帐户进行身份验证使您可以灵活地将插件与持续集成 (CI) 系统一起使用。提供服务帐户凭据的方法有两种:
- 将您的服务帐户密钥文件传递给
firebase_app_distribution
操作。如果您的构建环境中已有服务帐户密钥文件,您可能会发现此方法很方便。 - 将环境变量
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 项目同名的项目。
提供或找到您的服务帐户凭据:
- 要将您的服务帐户密钥传递给通道的
firebase_app_distribution
操作,请使用私钥 JSON 文件的路径设置service_credentials_file
参数 要使用 ADC 查找您的凭据,请将环境变量
GOOGLE_APPLICATION_CREDENTIALS
设置为私钥 JSON 文件的路径。例如:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
有关使用 ADC 进行身份验证的更多信息,请阅读为您的应用程序提供凭据。
- 要将您的服务帐户密钥传递给通道的
有关如何对项目进行身份验证的说明,请参阅使用 Firebase CLI 登录。
第 3 步。设置您的 Fastfile 并分发您的应用程序
- 在
./fastlane/Fastfile
通道中,添加一个firebase_app_distribution
块。使用以下参数配置分发:firebase_app_distribution 参数 app
必需:您应用的 Firebase 应用 ID。您可以在 Firebase 控制台的常规设置页面上找到应用程序 ID。
app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token
当您运行插件的登录操作(请参阅上面的使用 Google 帐户进行身份验证),或者当您使用 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(task: "bundle", ...) # build_android_app is a built-in fastlane action. 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!", android_artifact_type: "AAB" ) end end
要使构建可供测试人员使用,请运行您的通道:
fastlane <lane>
fastlane 插件在发布上传后输出以下链接。这些链接可帮助您管理二进制文件并确保测试人员和其他开发人员拥有正确的版本:
-
firebase_console_uri
- 指向显示单个版本的 Firebase 控制台的链接。您可以与您组织中的其他开发人员共享此链接。 -
testing_uri
- 测试人员体验(Android 本机应用程序)中发布的链接,让测试人员可以查看发布说明并将应用程序安装到他们的设备上。测试人员需要访问版本才能使用该链接。 -
binary_download_uri
- 直接下载和安装应用程序二进制文件(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_testers
和firebase_app_distribution_remove_testers
任务也接受以下参数:
-
project_name
:您的 Firebase 项目编号。 -
service_credentials_file
:您的 Google 服务凭证文件的路径。 -
firebase_cli_token
:Firebase CLI 的授权令牌。
service_credentials_file
和firebase_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 控制台的常规设置页面上找到 App ID。 app: "1:1234567890:android:0a1b2c3d4e5f67890" |
firebase_cli_token | 当您运行插件的登录操作(请参阅上面的使用 Google 帐户进行身份验证),或者当您使用 Firebase CLI 对您的 CI 环境进行身份验证时(请阅读将 CLI 与 CI 系统结合使用以获取更多信息)时打印的刷新令牌。 |
service_credentials_file | 您的 Google 服务帐户 json 文件的路径。请参阅上文了解如何使用服务帐户凭据进行身份验证。 |
debug | 布尔标志。您可以将其设置为 |
下一步
了解使用 CI/CD 将 Android 应用分发给 QA 测试人员的最佳实践。