接上一篇,接下来介绍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不一样,这个标签的作用就是用来区分是哪个市场的