安卓签名用于验证应用开发者的身份,确保应用来自可靠的开发者,每个应用都有一个唯一的签名。签名除了用来验证开发者的身份,还是保障应用安全和数据完整性的关键技术。
安卓签名的工具:
Android签名的工具有两种:jarsigner和signapk。jarsigner在JDK里面,apksigner在build-tools里面,具体的路径可以自行百度,因为我不敢保证所有版本的路径是固定不变的。jarsigner会生成keystore,也就是我们用AS的签名能生成keystore。signapk能生成pk8和pem。这两方也是可以转换的。
Android支持以下三种应用签名方案:
-
v1 :基于 Jar 签名;
-
v2 :提高验证性能 & 覆盖范围(Android 7.0 Nougat 引入);
-
v3 :支持密钥轮换(Android 9.0 Pie 引入)。
-
v4:基于根据 APK 的所有字节计算得出的 Merkle 哈希树
为了提高兼容性,必须按照 v1、v2、v3 、v4的先后顺序采用签名方案,低版本平台会忽略高版本的签名方案在 APK 中添加的额外数据。
V1签名后会增加META-INF 文件夹,其中会有如下三个文件:
V1签名方案是Android早期的签名方案,已经不再推荐使用,与大多数开发工具兼容,这是一个兜底的方案,如果设备不支持更高版本的签名,这个方案可以作为最后的验证方案。
V2签名被广泛用于Android 7.0 Nougat 及更高版本。它可以提高安全性,使用压缩算法减小程序包的大小,并增加时间戳,以确保APP程序的真实性。
Android V3 的签名本质上和V2签名是类似的,方案增加了有关受支持的 SDK 版本和 proof-of-rotation 结构体的信息。
Android 11 通过 APK 签名方案 v4 支持与流式传输兼容的签名方案。v4 签名基于根据 APK 的所有字节计算得出的 Merkle 哈希树。它完全遵循 fs-verity 哈希树的结构(例如,对盐进行零填充,以及对最后一个分块进行零填充。)Android 11 将签名存储在单独的 <apk name>.apk.idsig 文件中。v4 签名需要 v2 或 v3 签名作为补充。
以上内容由AdSet聚合广告平台整理发布,供开发者参考~