近期,因为项目需要,所以将Android Studio升级到3.0,升级完以后在打包过程中出现了下面这个界面:
因之前在Android Studio 2.+版本中是没有这个界面的,所以便根据字面意思只勾选了V2,在测试过程中,用的测试机是android 7.1 版本,测试过程中没有遇到问题,后来需要适配新的机型时,通过界面安装时会安装失败,提示为apk解析失败,通过adb安装时,可看到错误信息为:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
,后来查阅资料得知,就是因为在打包过程中只勾选了V2,所以下面解析一下勾选V1和V2的区别。
googel官方对V2的解释:
以上得知,V2是一个从Android7.0系统出现的新的签名机制,如果只勾选V2,在7.0以下的机型中,是无法安装的。
V1和V2的区别:
V1:仅验证未解压的文件内容,这样APK 签署后可进行许多修改 ,可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。
正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。
V2的好处:更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),
从而加快应用安装速度。如有任何自定义任务篡改 APK 文件或对其进行后处理(无论以任何方式),
那么V2 签名会有作废的风险,从而导致您的 APK 与 Android 7.0 及更高版本不兼容。
综上,在使用的过程中,如果只需要适配7.0以上的机型,便可以只勾选V2,如果所有机型都需要适配,就需要同时勾选V1和V2。