获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用 fastlane 将 Android 应用分发给测试人员

本指南介绍如何使用fastlane将 AAB 构建分发给测试人员,fastlane 是一个开源平台,可自动构建和发布 iOS 和 Android 应用程序。它遵循Fastfile中定义的简单指令。设置 fastlane 和Fastfile ,您可以将 App Distribution 与您的 fastlane 配置集成。

App Distribution 与 Google Play 的内部应用共享服务集成,以处理您上传的 AAB 并提供针对测试人员设备配置优化的 APK。分发 AAB 可让您执行以下操作:

  • 运行针对测试人员设备优化的优化 APK(由 Google Play 提供)。

  • 发现并调试特定于设备的问题。

  • 测试Play Feature DeliveryPlay 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以下角色之一:––

在你开始之前

  1. 如果您还没有,请将 Firebase 添加到您的 Android 项目中。在此工作流结束时,您的 Firebase 项目中将有一个 Firebase Android 应用程序。

    如果您不使用任何其他 Firebase 产品,则只需创建一个项目并注册您的应用程序。如果您决定使用其他产品,请务必完成将 Firebase 添加到您的 Android 项目中的所有步骤。

  2. 要创建指向 Google Play 的 Firebase 链接并上传 AAB,请确保您的应用满足以下要求:

    • Google Play 中的应用程序和 Firebase Android 应用程序都使用相同的包名注册。

    • Google Play 中的应用程序在应用程序仪表板上设置,并分发到 Google Play 轨道之一(内部测试、封闭测试、开放测试或生产)。

    • 应用在 Google Play 中的审核已完成,应用已发布。如果应用程序状态列显示以下状态之一,则您的应用程序已发布:内部测试(不是草稿内部测试)、封闭式测试、开放式测试或生产。

  3. 将您的 Firebase Android 应用程序链接到您的 Google Play 开发者帐户:

    1. 在 Firebase 控制台中,转到您的 Project settings ,然后选择Integrations选项卡。

    2. Google Play卡片上,点击链接
      如果您已有指向 Google Play 的链接,请点击管理

    3. 按照屏幕上的说明启用 App Distribution 集成并选择要链接到 Google Play 的 Firebase Android 应用程序。

    了解有关链接到 Google Play 的更多信息。

步骤 1. 设置 fastlane

  1. 安装并设置 fastlane

  2. 要将 App Distribution 添加到您的 fastlane 配置,请从您的 Android 项目的根目录运行以下命令:

    fastlane add_plugin firebase_app_distribution

    如果命令提示您一个选项,请选择Option 3: RubyGems.org

第 2 步:使用 Firebase 进行身份验证

在使用 fastlane 插件之前,您必须先通过以下方式之一对您的 Firebase 项目进行身份验证。默认情况下,如果没有使用其他身份验证方法,fastlane 插件会从 Firebase CLI 中查找凭据。

第 3 步。设置您的 Fastfile 并分发您的应用程序

  1. ./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>

分发构建后,它会在 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_testersfirebase_app_distribution_remove_testers任务也接受以下参数:

  • project_name :您的 Firebase 项目编号。
  • service_credentials_file :您的 Google 服务凭证文件的路径。
  • firebase_cli_token :Firebase CLI 的授权令牌。

service_credentials_filefirebase_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

当您运行插件的登录操作(请参阅上面的使用 Google 帐户进行身份验证),或者当您使用 Firebase CLI 对您的 CI 环境进行身份验证时(请阅读将 CLI 与 CI 系统结合使用以获取更多信息)时打印的刷新令牌。

service_credentials_file

您的 Google 服务帐户 json 文件的路径。有关如何使用服务帐户凭据进行身份验证的信息,请参见上文。

debug

布尔标志。您可以将其设置为true以打印详细的调试输出。

下一步

了解使用 CI/CD 将 Android 应用分发给 QA 测试人员的最佳实践。