APK 签名方案全景:v1 v2 v3 v4 各管什么
为什么会有四种方案
安卓的签名机制随版本一路加固,每代方案针对上一代的弱点:
| 方案 | 引入版本 | 校验对象 | 解决的问题 |
|---|---|---|---|
| v1(JAR 签名) | 安卓诞生起 | 逐个文件条目 | 最初的签名体系,兼容一切老设备 |
| v2 | Android 7.0 | 整个 APK 文件字节 | v1 只查条目、可被塞料,v2 对整包做摘要 |
| v3 | Android 9.0 | 整包 + 密钥轮替信息 | 支持签名密钥的平滑换代 |
| v4 | Android 11 | 增量数据 | 配合流式安装,大包秒装 |
这些定义来自 Android 开发者文档对签名方案的说明,各家签名工具(包括 apk-signer 与电脑端 SDK 的 apksigner)都遵循同一套标准。
系统怎么挑方案
安装时,系统按自己支持的方案逐个尝试校验:老系统只认 v1,7.0 以上优先用 v2/v3 校验整包。这意味着一个 APK 里带哪几种签名,决定了它能被哪些设备接受——只签 v2 的包装上 Android 6 会失败,只签 v1 的包在 Android 11 上会触发兼容路径但安全性打折。
这张表对手机签名的意义
apk-signer 从 6.10.0 起把 v3、v4 作为可开关的方案选项加入签名设置。你在签名时勾选的组合,就是给这个包配的"通行证组合"。每一方案的取舍单开一页: