使用 Firebase App Distribution Android SDK 提醒测试人员有关新应用版本的信息 - Codelab

1. 概览

c7a9160ef7b184c7.png 22e0b52f771c060d.png

欢迎参加“在 Android 应用中集成 Firebase App Distribution SDK”Codelab。在本 Codelab 中,您将向应用添加 App Distribution Android SDK,以便在有新的 build 可供下载时向测试人员显示应用内提醒。您将了解如何使用基本配置和自定义配置,让测试人员登录以接收更新。然后,您将新版本推送到 App Distribution,并在应用中触发新的 build 提醒。

学习内容

  • 如何使用 App Distribution 将预发布应用分发给测试人员
  • 如何将 App Distribution Android SDK 集成到应用中
  • 如何在有新的预发布 build 可供安装时提醒测试人员
  • 如何自定义 SDK 以满足您的测试需求

所需条件

  • 最新版本的 Android Studio
  • 示例代码。
  • 搭载 Android 4.4 及更高版本和 Google Play 服务 9.8 或更高版本的测试设备,或者搭载 Google Play 服务 9.8 或更高版本的模拟器。
  • 如果使用设备,则需要连接线缆。

您打算如何使用本教程?

仅阅读教程内容 阅读并完成练习

您如何评价自己在构建 Android 应用方面的经验水平?

新手水平 中等水平 熟练水平

2. 获取示例代码

从命令行克隆 GitHub 代码库。

$ git clone https://github.com/FirebaseExtended/codelab-appdistribution-android.git

如果您尚未安装 git,也可以从示例项目的 GitHub 页面下载该项目,或点击此链接下载。

3. 导入 starter 应用

在 Android Studio 中,从示例代码下载中选择 codelab-appdistribution-android/start 目录 (android_studio_folder.png)(依次选择文件 > 打开 > .../codelab-appdistribution-android/start)。

现在,您应该已在 Android Studio 中打开起始项目。

4. 创建 Firebase 控制台项目

添加新的 Firebase 项目

  1. 打开 Firebase 控制台
  2. 选择添加项目,然后将项目命名为“Firebase Codelab”。

您无需为此项目启用 Google Analytics。

  1. 点击 Create project

向 Firebase 添加应用

在 Firebase 中注册您的应用。使用“com.google.firebase.appdistributioncodelab”作为软件包名称。

向应用添加 google-services.json 文件

添加软件包名称并选择“注册”后,请按以下步骤将 google-services.json 添加到您的应用:

  1. 点击下载 google-services.json 以获取 Firebase Android 配置文件。
  2. 将 google-services.json 文件复制到项目中的 app 目录中。
  3. 下载文件后,您可以跳过控制台中显示的后续步骤(这些步骤已在 build-android-start 项目中为您完成)。

更新应用 ID 以与 Firebase 应用匹配

  1. 在左侧菜单(“项目”标签页)中,确保您处于“Android”视图,然后找到“Gradle Scripts”标签页,并打开您的模块(应用级)Gradle 文件(通常为 app/build.gradle.kts)。
  2. 更改 applicationId 属性,使其与 Firebase 应用的应用 ID 相匹配。此属性应为“com.google.firebase.appdistributioncodelab”

将项目与 Gradle 文件同步

为确保您的应用拥有所有依赖项,请通过在 Android Studio 工具栏中选择 File > Sync Project with Gradle Files 将项目与 Gradle 文件同步。

5. 使用 App Distribution Android SDK 设置有关新 build 的应用内提醒

在此步骤中,您将向应用添加 Firebase App Distribution Android SDK,并在有新的应用 build 可供安装时向测试人员显示应用内提醒。为此,请确保您已为“Firebase Codelab”项目(在 Google Cloud 控制台中)启用 Firebase App Testers API。您需要使用同一账号登录,然后从顶部的下拉菜单中选择正确的项目。

配置应用内提醒

App Distribution Android SDK 提供了两种为测试人员设置应用内 build 提醒的方法:

  • 基本提醒配置,提供要向测试人员显示的预构建对话框。
  • 高级提醒配置,可让您自定义界面 (UI)。

我们先从基本提醒配置开始。您可以使用 updateIfNewReleaseAvailable 向尚未启用提醒的测试人员显示预建的“启用提醒”对话框,然后检查是否有新的 build。测试人员通过登录有权访问 App Distribution 中相应应用的账号来启用提醒。调用时,该方法将遵循以下顺序:

  1. 检查测试人员是否已启用提醒。如果测试人员尚未登录,该方法会显示一个预建对话框,提示测试人员使用其 Google 账号登录 App Distribution。

只需在测试设备上启用提醒一次。应用更新后,提醒的启用状态不会发生变化。提醒会在测试设备上保持启用状态,直到应用被卸载或 signOutTester 方法被调用为止。

  1. 检查是否有新推出的 build 可供测试人员安装。
  2. 显示提示测试人员下载最新版本的预构建提醒。
  3. 在继续更新之前,检查新 build 类型:
  4. 如果新 build 是 App Bundle (AAB),则会将测试人员重定向到 Play 商店以完成更新流程。
  5. 如果新 build 是 APK,则该 SDK 会在后台下载新 build,并在下载完成时提示测试人员安装新 build。该 SDK 会使用 NotificationManager. 向用户发送下载进度通知。您可以通过向 updateIfNewReleaseAvailable 任务附加 onProgressUpdate 处理程序来添加自己的进度指示器。

您可以在应用中的任何时间点调用 updateIfNewReleaseAvailable()。例如,您可以在 MainActivity 的 onResume() 方法执行过程中调用 updateIfNewReleaseAvailable()

打开 MainActivity.kt,然后创建 onResume() 方法,如下所示:

MainActivity.kt

override fun onResume() {
    super.onResume()
    checkForUpdate()
}

现在,我们来实现 checkForUpdate() 方法。

MainActivity.kt

   private fun checkForUpdate() {
        firebaseAppDistribution.updateIfNewReleaseAvailable()
            .addOnProgressListener { updateProgress ->
                // (Optional) Implement custom progress updates in addition to
                // automatic NotificationManager updates.
            }
            .addOnFailureListener { e ->
                if (e is FirebaseAppDistributionException) {
                    // Handle exception.
                }
            }
    }

6. 构建应用并邀请测试人员下载应用

在此步骤中,您将使用 Firebase 控制台将 build 分发给测试人员,以构建应用并测试实现。

构建应用

当您准备好将应用的预发布版本分发给测试人员时,应按照常规流程构建您的 APK。您必须使用调试密钥或应用签名密钥对 APK 文件进行签名。

将应用分发给测试人员

如需将应用分发给测试人员,请使用 Firebase 控制台上传 APK 文件:

  1. 打开 Firebase 控制台的“应用分发”页面。出现提示时,选择您的 Firebase 项目。
  2. 在“版本”页面上,从下拉菜单中选择您要分发的应用。

623460c3c8a82ce6.png

  1. 点击开始使用

bf503b25066ff4a4.png

  1. 将应用的 APK 文件拖到控制台中以便上传。
  2. 上传完成后,指定要接收此 build 的测试人员群组和各个测试人员。(添加您的电子邮件地址以接收邀请。)然后,为该 build 添加版本说明。如需详细了解如何创建测试人员群组,请参阅添加和移除测试人员

3343048f0930e84b.png

  1. 点击分发以将 build 提供给测试人员。

2be58fe195928bf9.png

在 Firebase 控制台中,您现在可以在应用的发布版本下看到您添加的测试人员。

9935a41810344c61.png

由于您添加了自己的电子邮件地址,因此您会收到 Firebase App Distribution 发送的电子邮件,邀请您测试应用。您现在是第一位测试人员!按照“接受邀请”中的说明操作,在测试设备上设置测试人员身份。

接受邀请

您需要先接受邀请,才能下载并测试相应版本。

  1. 在 Android 测试设备上,打开 Firebase App Distribution 发送的电子邮件,然后点按开始
  2. 在随即显示的 Firebase App Distribution 测试人员 Web 应用中,使用您的 Google 账号登录,然后点按接受邀请。您现在可以查看受邀测试的版本。

c18cb684f8e82ad6.png

从测试设备下载发布版本

当您前往 AppDistribution Codelab 应用时,可以看到相应版本已可供下载。

5414d9a536f25ece.png

  1. 点按下载,然后安装并运行该应用!
  2. 应用启动时,会询问您是否要启用新 build 提醒。点按开启

b059e09acaa4779f.png

  1. 使用您的测试人员账号登录。

22e0b52f771c060d.png

系统会返回到该应用。下次运行该应用时,您无需登录或接受提醒

c9f33df16a2680d.png

向测试人员分发更新

  1. 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中,将 versionName 更新为“1.1”,并将 versionCode 更新为 2。
  2. 按照常规流程构建 APK。您必须使用调试密钥或应用签名密钥对 APK 文件进行签名。
  3. 在 Firebase 控制台中上传此新 APK,再次将您的电子邮件地址添加为测试人员,然后点击分发

2dfa702edfdce6b8.png

测试 build 提醒

  1. 确保您已关闭应用(如果应用处于打开状态)。
  2. 重启应用。
  3. 当应用重启时,您会收到“有新版本可用”提醒。

987e3d0ba4e56f84.png

  1. 如需接收最新版本,请点击更新
  2. 如果系统提示,请选择相应选项以启用从未知来源安装。
  3. 在下一个界面中,点击安装(或更新)。

a7c7cd15d60bc764.png

  1. 恭喜!您能够通过内置提醒更新应用。

7. 自定义测试人员登录

借助 signInTester/signOutTesterisTesterSignedIn 方法,您可以更灵活地自定义测试人员的登录体验,因此可以与应用的外观更相符。

以下示例会检查测试人员是否已登录其 Firebase App Distribution 测试人员账号,因此您可以选择仅为尚未登录的测试人员显示登录界面。测试人员登录后,您便可以调用 checkForUpdate 以检查测试人员是否可以访问新的 build。

我们通过注释掉 checkForUpdate() 调用,在 onResume 中停用自动检查更新。

MainActivity.kt

override fun onResume() {
        super.onResume()
        //checkForupdate()
    }

相反,checkForUpdate() 已添加到 updatebutton 的 OnClickListener 中。

现在,我们来实现 signIn() 方法,该方法会在用户处于未登录状态时登录用户,或在用户已登录时退出登录。

MainActivity.kt

    private fun signIn() {
        if (isTesterSignedIn()) {
            firebaseAppDistribution.signOutTester()
            configureUpdateButton()
            configureSigninButton()
        } else {
            firebaseAppDistribution.signInTester()
        }
    }

最后,我们来实现 isTesterSignedIn 方法。

MainActivity.kt

    private fun isTesterSignedIn() : Boolean {
        return firebaseAppDistribution.isTesterSignedIn
    }

构建并测试您的实现

8. 恭喜!

您已使用 Firebase App Distribution Android SDK 将“应用内提醒显示”功能构建到应用中。

所学内容

  • Firebase App Distribution
  • Firebase App Distribution 新提醒 Android SDK

后续步骤

了解详情

有疑问?

报告问题