第4章 构建并上传App Bundle/APK到测试轨道

适用场景

本章适用于以下场景:

  • 开发者已完成应用功能开发,准备通过Google Play测试轨道分发给内部测试人员、封闭测试用户或开放测试用户。
  • 需要将签名的发布构件(App Bundle 或 APK)上传至 Play Console 并关联到特定测试轨道发布。
  • 团队需要统一操作流程,确保构建一致性、签名正确性和上传轨道的可追溯性。

前置条件

  • 已注册 Google Play Console 开发者账号,并创建了应用(Application)。
  • 已生成或获得应用签名密钥(.jks / .keystore),并妥善保管密码与别名信息。
  • 已在 Play Console 中为应用创建至少一个测试轨道(内部测试 / 封闭测试 / 开放测试),并添加了测试人员列表(邮箱或 Google 群组)。
  • 本地开发环境满足要求:Android Studio Arctic Fox 或更高版本;或已安装 Android SDK、Gradle 及命令行工具(bundletool、apksigner 等)。
  • 已完成应用版本号(versionCode / versionName)的更新,确保高于已上架版本。

操作步骤

流程分为两种常用方式:Android Studio 图形化方式和命令行方式。无论选择哪种,最终产物均为签名后的发布构件。以下步骤以 Android Studio 方式为主,命令行关键命令作为补充参考。

核心流程概览:生成签名发布构件 → 登录 Play Console → 选择应用 → 选择测试轨道 → 上传构件 → 填写版本说明 → 保存并发布。

步骤1:配置签名信息

在项目级 build.gradle(Module 级别)中配置签名配置。推荐使用单独的签名配置文件或环境变量管理密钥密码。

android {
    signingConfigs {
        release {
            storeFile file("release.keystore")
            storePassword System.getenv("KEYSTORE_PASSWORD") ?: "请使用环境变量"
            keyAlias System.getenv("KEY_ALIAS") ?: "请使用环境变量"
            keyPassword System.getenv("KEY_PASSWORD") ?: "请使用环境变量"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
安全警告:切勿将密钥密码硬编码在版本控制中。建议使用 Gradle 属性文件(未跟踪)或 CI/CD 环境变量。

步骤2:生成签名 App Bundle 或 APK

Android Studio 方式:

  1. 点击菜单栏 Build → Generate Signed Bundle / APK。
  2. 选择 Android App Bundle(推荐,Google Play 优化分发)或 APK。
  3. 选择签名配置(或手动输入密钥信息)。
  4. 选择构建变体为 release。
  5. 指定输出路径,点击 Finish 等待构建完成。

命令行方式:

# 清理先前构建(可选)
./gradlew clean

# 生成签名 App Bundle
./gradlew bundleRelease

# 生成签名 APK
./gradlew assembleRelease

# 输出位置:app/build/outputs/bundle/release/ 或 app/build/outputs/apk/release/

步骤3:登录 Play Console 并进入应用

  1. 访问 Play Console,使用开发者账号登录。
  2. 在左侧导航栏选择目标应用。

步骤4:选择测试轨道

  1. 在左侧菜单 测试 → 内部测试 / 封闭测试 / 开放测试,选择需要发布的目标轨道。
  2. 若轨道未创建,点击 创建新轨道 并按照向导完成设置(包括添加测试人员)。

步骤5:上传构件

  1. 在测试轨道页面,点击 创建新版本。
  2. 点击 上传 按钮,选择步骤2生成的 .aab 或 .apk 文件。
  3. 系统验证签名和版本号,若成功则显示构件摘要。

步骤6:填写版本说明并发布

  1. 输入版本说明(支持多语言,建议至少使用英语和主要目标语言)。
  2. 检查所有配置(测试人员范围、国家/地区、发布份额等)。
  3. 点击 保存 后,点击 发布版本 按钮。
  4. 等待数分钟至数小时,测试人员即可通过加入的测试链接下载安装。

输入输出物

输入物输出物
应用源代码项目签名发布 App Bundle(.aab)或 APK(.apk)
签名密钥文件(.jks / .keystore)Play Console 测试轨道发布版本记录
Google Play Console 开发者账号及应用测试人员收到的测试邀请(通过邮件或链接)
测试人员名单(邮箱或 Google 群组)版本说明(Release Notes)

责任边界

  • 开发者/工程师:负责签名配置安全、构建正确性、版本号管理。
  • 测试负责人/PM:负责测试轨道创建、测试人员名单维护、版本说明撰写。
  • DevOps/CI 管理员:若使用自动化流水线,负责确保签名密码安全及构建触发条件。
  • 合规/法务:确保测试分发不涉及敏感权限或内容违规(特殊场景下介入)。

记录材料

  • 构建日志(Gradle 控制台输出或 CI 构建日志)。
  • 签名密钥指纹(SHA-1 / SHA-256)与 Play Console 登记的指纹比对记录。
  • 版本号记录:versionCode、versionName、构建时间戳。
  • Play Console 发布版本截图(或发布操作的时间戳)。
  • 测试人员确认收到测试邀请的反馈记录(可选)。

异常处理

异常现象可能原因解决措施
构建失败:“Signature failed”密钥文件路径错误、密码错误、别名不匹配检查 signingConfig 配置;使用 keytool 验证密钥库
上传提示“Version code 已存在”versionCode 未递增在 build.gradle 中增加 versionCode
发布后测试人员无法收到邀请测试轨道未设置用户列表;用户邮箱未验证返回轨道设置添加正确邮箱,确认用户已加入 Google 群组
上传失败:“App Bundle is not signed”构建时未配置 release 签名检查 buildTypes 中 release 的 signingConfig
Play Console 提示“应用签名不一致”本地上传密钥与 Play 应用签名密钥不匹配(新应用)上传原始签名密钥或使用 Play 提供的签名方案

验收标准

  • 能够从 Play Console 成功下载已发布的测试版本(通过测试链接或直接查看)。
  • 测试人员(至少 1 位)成功安装并打开应用,应用签名与内部 debug 构建一致(不提示证书错误)。
  • 版本说明在 Play Store 测试页面正确显示。
  • 所有配置(国家/地区限制、测试人员范围)按预期生效。
  • 如有 CI/CD 集成,构建日志中无签名类错误,且自动上传后轨道状态更新为“已发布”。
构建并上传App Bundle/APK到测试轨道流程 1. 开发环境(Studio / CLI) 2. 配置签名信息 3. 生成签名AAB/APK 4. 上传至Play Console 5. 选择测试轨道并发布 6. 测试人员获取链接安装 注意事项 • 密钥密码绝不硬编码 • 确保versionCode递增 • 测试人员范围需激活