跳到主要内容
ecdsa.com

APK 签名方案(v1~v4)

Android 的应用签名格式:v1 为 JAR 签名;v2(Android 7.0)和 v3(Android 9,支持密钥轮换)是存放在 APK 签名分块中的全文件签名;v3.1(Android 13)支持定向轮换;v4(Android 11)用于增量安装。
其他写法APK signingAPK Signature Scheme v2APK Signature Scheme v3apksigner

v2 对签名分块本身(分块 ID 0x7109871a)以外的全部 APK 内容签名,因此任何修改都会被检测到,验证也比 v1 逐条目检查 JAR 更快。v3(分块 ID 0xf05368c0)增加了轮换证明谱系,使应用可以迁移到新的签名密钥;v3.1 允许轮换只对较新的平台版本生效。v4 把 Merkle 树签名存放在单独的 .idsig 文件中,用于 ADB 增量安装,同时还要求有 v2 或 v3 签名。

apksigner sign 和 apksigner verify --print-certs 支持所有方案;Google Play 应用签名把应用签名密钥保存在 Google 一侧,开发者则使用单独的上传密钥上传应用。更新必须由同一密钥或经过轮换的后继密钥签名,否则安装会失败。APK 签名查看器会列出方案、签名者和谱系。

标准与参考资料

全部术语