构建与发布
参考工程的发布路径是:
本地/CI 构建签名 APK 或 AAB + 清单冒烟 + 安全项核对
不是「把 debug 包改个名发给用户」。
详细清单以仓库为准:
docs/RELEASE_CHECKLIST.mddocs/SECURITY_NOTES.mddocs/BETA_QA_CHECKLIST.mdsigning.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. 冒烟路径(产品)
干净安装后建议至少走通:
- 注册 / 登录
- 创建或选择组织
- Home / Dashboard 健康信息
- 创建设备 → 复制一次性 secret → 关闭后不可再见
- 设备详情、改名或 通道、启停
- 命令创建与事件
- 遥测 / 告警 / 自动化 / 通知中与版本相关的主路径
- Settings:改 API 端点再重置默认
- 配置 admin token 后打开 admin 相关页
- 清缓存后刷新
- 退出登录回到 Auth
- 模拟会话失效 / 401 后的刷新或登出
完整勾选见仓库 RELEASE_CHECKLIST 与 Beta QA 文档。
6. 环境与端点
- 默认:
https://api-dev.alinode.com/(或以团队发布环境为准) -PapiBaseUrl仅开发覆盖- Settings 可持久化与重置端点
发布给外部用户时,确认包内默认端点不是误指向个人电脑 IP。
7. 与工程流程的关系
8. 自检摘要
- 签名配置来自本地或 CI 密钥,不在 Git
-
apksigner/jarsigner验证通过 - Release 日志与 R8 策略符合 安全与密钥
- 主业务冒烟通过
- instrumentation 或有明确豁免记录
返回目录:Android 教程首页。