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

您可以使用“应用分发”Gradle 插件将“应用分发”集成到 Android 构建过程中。利用该插件,您可以在应用的 build.gradle 文件中指定测试人员和版本说明,从而针对应用的不同构建类型和变体配置分发。

准备工作

将 Firebase 添加至您的 Android 项目(如果尚未添加)。

如果您没有使用任何其他 Firebase 产品,只需创建一个项目并注册应用。但是,如果您决定以后使用其他产品,请务必完成上述链接页面上的所有步骤。

1.设置 Android 项目

在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)的 Android 插件底部,添加“应用分发”插件:

apply plugin: 'com.android.application'
// ...

apply plugin: 'com.google.firebase.appdistribution'
// ...

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.google.firebase:firebase-appdistribution-gradle:1.1.0'
    }
}

2.进行 Firebase 身份验证

要使用 Gradle 插件,您必须先进行 Firebase 项目的身份验证。您可以通过三种方法实现此目的:

使用 Google 帐号进行身份验证

  1. 运行以下命令:
    ./gradlew appDistributionLogin
    
    该命令将会输出身份验证链接。
  2. 在浏览器中打开该链接。

  3. 出现提示时,登录您的 Google 帐号并授予访问您的 Firebase 项目的权限。Gradle 命令将会输出刷新令牌,“应用分发”插件可使用该令牌进行 Firebase 身份验证。

  4. 将环境变量 FIREBASE_TOKEN 设置为上一步中生成的令牌:
    export FIREBASE_TOKEN=<token>
    

使用服务帐号进行身份验证

您可以使用服务帐号进行身份验证,这样就能灵活将插件与持续集成 (CI) 系统配合使用。您可以通过两种方式来提供服务帐号凭据:

  • 将您的服务帐号密钥文件传递给 build.gradle。如果您已在构建环境中拥有服务帐号密钥文件,则可能会发现此方法很便捷。
  • GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为指向您的服务帐号密钥文件。如果您已经为其他 Google 服务(例如 Google Cloud Platform)配置了 ADC,也许更倾向于使用此方法。

要使用服务帐号凭据进行身份验证,请执行以下操作:

  1. Google Cloud Platform Console 中选择您的项目并创建一个新的服务帐号。
  2. 添加 Firebase Quality Admin 角色。
  3. 创建一个 JSON 私钥并将其移到构建环境可访问的位置。请务必将此文件保存在安全的位置,因为它会向管理员授予对您的 Firebase 项目的访问权限。
  4. 如果您是在 2019 年 9 月 20 日之后创建的应用,请跳过此步骤:在 Google API 控制台中,启用 Firebase App Distribution API。出现提示时,请选择与您的 Firebase 项目同名的项目。
  5. 提供或查找您的服务帐号凭据:

    1. 要将您的服务帐号密钥传递给 Gradle,请在 build.gradle 文件中将属性 serviceCredentialsFile 设置为私钥 JSON 文件。
    2. 要使用 ADC 查找您的凭据,请设置环境变量 GOOGLE_APPLICATION_CREDENTIALS。将 [PATH] 替换为私钥 JSON 文件的路径,并将 [FILE_NAME] 替换为文件名。例如:

       export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
      

      如需详细了解如何使用 ADC 进行身份验证,请参阅向您的应用提供凭据

3.配置您的分发属性

  1. app/build.gradle 文件中,通过添加至少一个 firebaseAppDistribution 部分来配置“应用分发”。您可以针对构建类型和产品方案配置“应用分发”。例如,要将 release 构建版本分发给测试人员,请执行以下操作:

    android {
    
        // ...
    
        buildTypes {
            release {
                firebaseAppDistribution {
                    releaseNotesFile="/path/to/releasenotes.txt"
                    testers="ali@example.com, bri@example.com, cal@example.com"
                }
            }
        }
    
        // ...
    }
    

    要分发产品方案为“演示”和“完整”的 debugrelease 构建版本,请执行以下操作:

    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"
              }
          }
        }
    
        // ...
    }
    

请使用以下参数配置“应用分发”:

应用分发构建参数
appId

您的应用的 Firebase 应用 ID。只有在您未安装 Google 服务 Gradle 插件时才需要此 ID。您可以在 google-services.json 文件中或在 Firebase 控制台的“常规设置”页面中找到此应用 ID。您的 build.gradle 文件中的值会覆盖 google-services Gradle 插件的输出值。

serviceCredentialsFile

服务帐号私钥 JSON 文件的路径。只有在使用服务帐号进行身份验证时才需要此参数。

releaseNotes or releaseNotesFile

此构建的版本说明。

您可以直接指定版本说明,或指定一个纯文本文件的路径。

testers or testersFile

您要向其分发构建版本的测试人员的电子邮件地址。

您可以采用逗号分隔电子邮件地址列表的形式来指定测试人员:


testers="ali@example.com, bri@example.com, cal@example.com"

或者,您可以指定一个文件的路径,该文件包含以逗号分隔的电子邮件地址列表:


testersFile="/path/to/testers.txt"
groups or groupsFile

您要向其分发构建版本的测试人员群组(请参阅管理测试人员)。使用群组别名指定群组,您可以在“Firebase 应用分发”控制台的测试人员标签页中查找群组别名。

您可以采用以逗号分隔的群组别名列表的形式来指定群组:


groups="qa-team, android-testers"

或者,您可以指定一个文件的路径,该文件包含以逗号分隔的群组别名列表:


groupsFile="/path/to/tester-groups.txt"

4.将您的应用分发给测试人员

最后,要封装测试应用并邀请测试人员,请使用项目的 Gradle 封装容器来构建目标 assembleBUILD-VARIANTappDistributionUploadBUILD-VARIANT,其中 BUILD-VARIANT 是您在上一步配置的可选产品方案和构建类型。

例如,要使用 release 构建变体分发您的应用,请运行以下命令:

./gradlew assembleRelease appDistributionUploadRelease

或者,如果您已使用 Google 帐号进行身份验证并且未在 Gradle 构建文件中提供凭据,请添加 FIREBASE_TOKEN 变量:

export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
./gradlew --stop // Only needed for environment variable changes
./gradlew assembleRelease appDistributionUploadRelease

之前未受邀测试应用的测试人员将会收到电子邮件邀请函以开始测试。当有新的构建版本准备接受测试时,现有测试人员将收到电子邮件通知。

如需详细了解产品方案,请参阅配置构建变体