本文档介绍如何使用 fastlane 将 APK build 分发给测试人员;Fastlane 是一个开源平台,可自动构建和发布 iOS 和 Android 应用。本文档遵循 Fastfile
中定义的说明。设置 Fastlane 和 Fastfile
后,您可以将 App Distribution 与您的 Fastlane 配置进行集成。
准备工作
将 Firebase 添加到您的 Android 项目(如果尚未添加)。
如果您没有使用任何其他 Firebase 产品,只需创建一个项目并注册应用。但是,如果您决定以后使用其他产品,请务必完成上述链接页面上的所有步骤。
第 1 步:设置 Fastlane
如需将 App Distribution 添加到您的 Fastlane 配置,请从 Android 项目的根目录运行以下命令:
fastlane add_plugin firebase_app_distribution
如果该命令提示您选择某个选项,请选择
Option 3: RubyGems.org
。
第 2 步:进行 Firebase 身份验证
您必须首先通过以下方法之一对 Firebase 项目进行身份验证,然后才能使用 Fastlane 插件。默认情况下,若未使用其他身份验证方法,Fastlane 插件会从 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
使用 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
此 build 的版本说明。
您可以直接指定版本说明:
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"
test_devices
test_devices_file
以下分发类型属于自动化测试助手 Beta 版功能的一部分。
您要向其分发 build 的测试设备(请参阅自动化测试)。
您可以采用以英文分号分隔的测试设备列表的形式指定测试设备:
test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
或者,您可以指定一个纯文本文件的路径,该文件包含以英文分号分隔的测试设备列表:
test_devices_file: "/path/to/test-devices.txt"
test_username
在自动化测试期间要使用的自动登录的用户名。
test_password
test_password_file
在自动化测试期间要使用的自动登录的密码。
或者,您可以指定一个纯文本文件的路径,该文件包含密码:
test_password_file: "/path/to/test-password.txt"
test_username_resource
在自动化测试期间要使用的自动登录的用户名字段的资源名称。
test_password_resource
在自动化测试期间要使用的自动登录的密码字段的资源名称。
test_non_blocking
异步运行自动化测试。访问 Firebase 控制台查看自动测试结果。
debug
布尔值标志。您可以将其设置为
true
以显示详细的调试输出。
platform :android do desc "My awesome app" lane :distribute do build_android_app(...) # build_android_app is a built-in fastlane action. release = 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!" ) end end
如需向测试人员提供此 build,请运行您的通道:
fastlane <lane>
该操作的返回值是用于表示上传版本的哈希值。
您也可以使用 lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]
获取此哈希值。如需详细了解此哈希值中的可用字段,请参阅 REST API 文档。
Fastlane 插件会在上传版本后输出以下链接。这些链接可帮助您管理二进制文件,并确保测试人员和其他开发者拥有正确的版本:
- 指向显示单个版本的 Firebase 控制台的链接。您可以将此链接分享给贵组织中的其他开发者。
- 测试人员体验(Android 原生应用)中的版本链接,可让测试人员查看版本说明并将应用安装到设备上。测试人员需要有权访问相应版本才能使用该链接。
- 用于直接下载并安装应用二进制文件(APK 或 AAB 文件)的签名链接。该链接会在 1 小时后过期。
在您分发 build 后,可在 150 天内通过 Firebase 控制台的 App Distribution 信息中心中访问该 build。当该 build 距离到期还有 30 天的时候,控制台中和测试人员的测试设备上的 build 列表中都会显示到期通知。
之前未受邀测试应用的测试人员会收到邀请其开始测试的电子邮件。当有新的 build 准备接受测试时,现有测试人员会收到电子邮件通知。如需了解如何安装测试应用,请参阅测试人员设置指南。您可以在 Firebase 控制台中监控每个测试人员的状态,以确定他们是否接受了邀请以及是否下载了应用。
(可选)如需在每次通过 App Distribution 创建新版本时自动递增 build 编号,您可以使用 firebase_app_distribution_get_latest_release
操作以及类似 increment_version_code
fastlane 插件的方法。
以下代码提供了有关如何自动递增 build 编号的示例:
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 a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers
运行 Fastlane 操作
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"
您还可以使用 --file="/path/to/testers.txt
(而非 --emails
)指定测试人员。
firebase_app_distribution_add_testers
和 firebase_app_distribution_remove_testers
任务也接受以下参数:
project_name
:您的 Firebase 项目编号。group_alias
(可选):如果指定,则将测试人员添加到指定的群组(或从指定的群组中移除测试人员)。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 控制台的“常规设置”页面找到此应用 ID。 app: "1:1234567890:android:0a1b2c3d4e5f67890" |
firebase_cli_token
|
使用 Firebase CLI 对 CI 环境进行身份验证时输出的刷新令牌(如需了解详情,请参阅将 CLI 与 CI 系统配合使用)。 |
service_credentials_file
|
您的 Google 服务账号 json 文件的路径。如需了解如何使用服务账号凭据进行身份验证,请参见上文。 |
debug
|
布尔值标志。您可以将其设置为 |
后续步骤
实现应用内反馈,以便测试人员轻松发送有关应用的反馈(包括屏幕截图)。
了解如何在有新的应用 build 可供安装时向测试人员显示相应的应用内提醒。
了解使用 CI/CD 将 Android 应用分发给质量检查测试人员的最佳实践。