快速结论:Android release 产物需要稳定 keystore、正确 signingConfig、可验证签名,以及本地、CI 和应用商店之间一致的签名假设。
开发者常问的问题
- Android release APK 或 AAB 如何签名?
- keystore、alias、upload key 和 app signing key 有什么区别?
- 为什么升级安装时报签名不一致?
- 上传前如何验证 APK 签名?
快速答案
发布签名是 Android 应用身份。只要证书或签名流程不一致,就可能导致无法升级安装、商店拒绝上传或用户侧更新失败。
开发者常搜的术语
keystore 是密钥容器,alias 是其中某个密钥条目,upload key 用于上传 Google Play,app signing key 由 Play App Signing 用于最终分发。团队必须清楚当前产物使用哪一个身份。
手动流程
先确认 signingConfig,再执行 zipalign 和 apksigner,随后用 apksigner verify 检查签名 scheme、证书指纹和完整性。CI 中还需要安全注入 keystore 与密码。
常见签名错误
常见问题包括 debug keystore 混入 release、alias 或密码错误、zipalign 与签名顺序错误、新旧包证书不同、v1/v2/v3 scheme 不完整,以及本地测试签名与商店上传签名混淆。
ADB Pro 如何帮助
Signing Tools 可以读取 Gradle signingConfigs、执行签名与验证、展示证书指纹;Release Readiness 会在上传前提醒签名身份、证书和 release 配置风险。
FAQ:以后可以换签名 key 吗?
这取决于分发渠道。Google Play App Signing 支持部分密钥升级流程,但直接分发 APK 的升级路径通常依赖同一证书。
FAQ:密码能写进 build.gradle 吗?
不建议。签名密码应通过本地安全存储、环境变量或 CI secrets 注入,避免进入仓库和日志。
FAQ:为什么 debug 能安装 release 失败?
debug 与 release 可能使用不同证书,也可能 release 开启了更严格的 minify、资源压缩或签名 scheme,导致安装或运行表现不同。
相关指南
Android App Signing Guide、Release Readiness Checklist 和 AAB Tools 安装指南可以覆盖验证与本地测试。