APK Signature Scheme V2 是在Android 7.0 中引入的新的Android APK签名机制。
先给出一个关于Scheme V2的总结:
1. 用来验证APK可靠性的加密签名现在位于压缩文件的Central Directory之前。
2. 新的签名是基于整个APK文件的二进制内容生成的。与基于压缩包中每个解压文件的内容的V1版本不同。
3. 一个APK可以同时使用V1,V2签名,可以避免兼容性问题。
为什么要引入新的签名机制呢?
首先,新的签名机制有更高的安全性和可扩展性。===对比===
其次,新签名机制不需要解压缩后对每个文件内容做判断,性能更高,能提高应用验证速度,缩短安装时间。
使用Scheme V2需要注意的事情:
因为V2 与 V1不同,是基于整个APK的二进制文件内容做签名。所以,不能在签名后再对APK做一些操作。 比如V1 签名后,可以对APK做 ZipAlign操作,可以通过添加空文件的形式做渠道标记。 使用V2 签名后不能在签名后做类似操作。
如果你要手动做Align和Sign,那么要使用Android SDK新提供的apksigner,它支持V1和V2签名。 需要注意,之前的签名工具jarsigner不支持V2签名。
如果你要禁用V1或者V2签名,可以在build.gradle 的signingConfig部分设置:
v1SigningEnabled false
v2SigningEnabled false
在Android Gradle Plugin 2.2上,默认两种签名都开启,优先使用V2。