Android 支持以下三种应用签名方案:
v1 方案:基于 JAR 签名。
v2 方案:APK 签名方案 v2(在 Android 7.0 中引入)。
v3 方案:APK 签名方案 v3(在 Android 9 中引入)。
V3.1v3.1方案:v3.1 方案解决了 APK 签名方案 v3 在轮替方面的一些已知问题。具体而言,v3.1 签名方案支持 SDK 版本定位功能,这会允许轮替定位到平台的更高版本。
v3.1 签名方案使用在 Android 12 或更低版本中无法识别的分块 ID。因此,平台会应用以下 signer 行为:
搭载 Android 13 或更高版本的设备使用 v3.1 分块中的轮替 signer。
搭载旧版 Android 的设备会忽略轮替 signer,而使用 v3 分块中的原始 signer。
尚未轮替其签名密钥的应用无需执行任何其他操作。每当这些应用选择轮替时,系统都会默认应用 v3.1 签名方案.
APK签名方案V4:
Android 11 通过 APK 签名方案 v4 支持与流式传输兼容的签名方案。v4 签名基于根据 APK 的所有字节计算得出的 Merkle 哈希树。它完全遵循 fs-verity 哈希树的结构(例如,对盐进行零填充,以及对最后一个分块进行零填充。)Android 11 将签名存储在单独的 .apk.idsig 文件中。v4 签名需要 v2 或 v3 签名作为补充。