跳到主要内容

构建与发布

参考工程的发布路径是:

本地/CI 构建签名 APK 或 AAB + 清单冒烟 + 安全项核对

不是「把 debug 包改个名发给用户」。

详细清单以仓库为准:

  • docs/RELEASE_CHECKLIST.md
  • docs/SECURITY_NOTES.md
  • docs/BETA_QA_CHECKLIST.md
  • signing.properties.example

1. 构建类型

当前常用:

类型用途
debug日常开发、可调试
release优化(R8)、发布日志策略、签名

无特殊 flavor 时,不要使用文档外的 prodRelease 等名字,除非你们已添加 product flavor。

Release 优化依赖 AGP 配置与 gradle.properties 中的约定(例如 AGP 9 的 android.r8.gradual.support=true)。升级 AGP/Kotlin/Compose BOM 需单独评估,不要夹在业务 PR 里顺手升。

2. 签名(切勿提交密钥)

生成 keystore(仓库外)

keytool -genkeypair -v \
-keystore /absolute/path/to/base-release.jks \
-alias base-release \
-keyalg RSA \
-keysize 2048 \
-validity 10000

本地 signing.properties

从示例复制(不要提交真实密码):

cp signing.properties.example signing.properties
storeFile=/absolute/path/to/base-release.jks
storePassword=...
keyAlias=base-release
keyPassword=...

或环境变量

export BASE_RELEASE_STORE_FILE=/absolute/path/to/base-release.jks
export BASE_RELEASE_STORE_PASSWORD=...
export BASE_RELEASE_KEY_ALIAS=base-release
export BASE_RELEASE_KEY_PASSWORD=...

未配置签名时,release 产物可能是未签名的本地校验包——不能当上架包。

3. 构建产物

./gradlew assembleRelease
./gradlew bundleRelease

常见输出:

app/build/outputs/apk/release/app-release.apk
app/build/outputs/bundle/release/app-release.aab

Play 上架通常用 AAB;内测分发可用 APK。

校验签名

$ANDROID_HOME/build-tools/$(ls "$ANDROID_HOME/build-tools" | sort -V | tail -1)/apksigner \
verify --print-certs app/build/outputs/apk/release/app-release.apk
jarsigner -verify -certs app/build/outputs/bundle/release/app-release.aab

4. 发布前命令门禁(建议)

./gradlew test
./gradlew build
./gradlew assembleRelease
./gradlew bundleRelease
./gradlew :app:connectedDebugAndroidTest # 需设备;无设备则记录原因并人工补跑

说明:

  • 单元测试与 build 捕获编译/测试回归
  • instrumentation 只用 :app:connectedDebugAndroidTest
  • 无设备时不要假装绿灯:在发布记录里写明「设备测未跑」

5. 冒烟路径(产品)

干净安装后建议至少走通:

  1. 注册 / 登录
  2. 创建或选择组织
  3. Home / Dashboard 健康信息
  4. 创建设备 → 复制一次性 secret → 关闭后不可再见
  5. 设备详情、改名或通道、启停
  6. 命令创建与事件
  7. 遥测 / 告警 / 自动化 / 通知中与版本相关的主路径
  8. Settings:改 API 端点再重置默认
  9. 配置 admin token 后打开 admin 相关页
  10. 清缓存后刷新
  11. 退出登录回到 Auth
  12. 模拟会话失效 / 401 后的刷新或登出

完整勾选见仓库 RELEASE_CHECKLIST 与 Beta QA 文档。

6. 环境与端点

  • 默认:https://api-dev.alinode.com/(或以团队发布环境为准)
  • -PapiBaseUrl 开发覆盖
  • Settings 可持久化与重置端点

发布给外部用户时,确认包内默认端点不是误指向个人电脑 IP。

7. 与工程流程的关系

8. 自检摘要

  • 签名配置来自本地或 CI 密钥,不在 Git
  • apksigner / jarsigner 验证通过
  • Release 日志与 R8 策略符合 安全与密钥
  • 主业务冒烟通过
  • instrumentation 或有明确豁免记录

返回目录:Android 教程首页