Android签名原理介绍(2)--schemev2

接上一篇,接下来介绍7.0后新增的v2签名认证方式

APK Signature Scheme v2

与v1方式签名不同的是,v2的签名是对整个文件的一种签名方式

直接从字节码上对apk进行签名,不必遍历每个入口进行计算签名

并且每一个改动都会使得签名失败,因此其提高了签名认证的速度和签名保护的安全性

但是有一点得注意的是,v2签名仅用在7.0以上的系统中,因为只有7.0以上的系统有有关v2签名认证的代码

因此为了适配早前的系统,正常还是采用v1签名,或是v1v2签名并存

在后面的代码可以看出来,7.0以上的系统会先进行v2签名的认证,若没检测到v2签名信息,则再进行v1的方法

但是由于一些应用需要打包渠道包,每次修改再编译再签名实在太耗时,大部分会选择关闭v2签名

在build Gradle中添加

v2SigningEnabled false

因为在v1签名中,META-INF中的内容是不会检测的,这使得在打包渠道包时不需要重复重新签名

渠道包指的是在各大应用市场,发布的apk包的清单文件中,某个meta-data标签下,配置的value不一样,这个标签的作用就是用来区分是哪个市场的

阅读更多