签名方案Signature Versions V1&V2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HUandroid/article/details/79012599

最近studio升级到3.0版本后,突然发现项目打包的时候出现以下勾选项:
这里写图片描述
Signature Versions V1&V2
必须要选一种签名方式,才能进行打包。
查了下资料才知道Android7.0更新了打包方案,参考资料如下:
https://developer.android.google.cn/about/versions/nougat/android-7.0.html#apk_signature_v2

重点部分如下:

Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。

虽然我们建议您对您的应用采用 APK Signature Scheme v2,但这项新方案并非强制性的。如果您的应用在使用 APK Signature Scheme v2 时不能正确开发,您可以停用这项新方案。禁用过程会导致 Android Studio 2.2 和 Android Plugin for Gradle 2.2 仅使用传统签名方案来签署您的应用。要仅用传统方案签署,打开模块级 build.gradle 文件,然后将行 v2SigningEnabled false 添加到您的版本签名配置中:

 android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

注意:如果您使用 APK Signature Scheme v2 签署您的应用,并对应用进行了进一步更改,则应用的签名将无效。出于这个原因,请在使用 APK Signature Scheme v2 签署您的应用之前、而非之后使用 zipalign 等工具。

如需了解详细信息,请阅读相关的 Android Studio 文档,这些文档介绍了如何在 Android Studio 中签署应用以及如何使用 Android Plugin for Gradle 为签署应用配置构建文件。

测试
看了介绍,分别采用V1和V2方式进行打包,结果符合官网描叙:

这里写图片描述
6.0系统下,仅勾选V2安装失败如下(乐视x620)
这里写图片描述
v1和v2区别:

V1:仅验证未解压的文件内容,这样APK 签署后可进行许多修改 ,可以移动甚至重新压缩文件;
    V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。如有任何自定义任务篡改 APK 文件或对其进行后处理(无论以任何方式),那么V2 签名会有作废的风险,从而导致您的 APK 与 Android 7.0 及更高版本不兼容。

如何选择:根据前面的测试结果来说
勾选v1:签名并不会影响什么,但是在7.0上不会使用更安全的验证方式,相当于官网解决方案。
**勾选V2**7.0以下系统直接提示安装失败或者安装包异常,7.0以上系统则会使用V2方式验证,安装速度更快
勾选V1和V2:比较兼容的处理方式

但是:现在应用上传到应用市场,一般都会先去加固或者分渠道(加密),再签名才行。这就不符合V2签名的描叙了。
V2在签名后无法再更改(包括zipalign),就会产生以下情况:
在爱加密加固平台加固提示以下:
这里写图片描述
在百度加固保测试如下:原因为:应用内部错误
这里写图片描述

如果采用V2签名方案的话,如上几个加固平台都是不能用的了,只能采用以下方案了:

猜你喜欢

转载自blog.csdn.net/HUandroid/article/details/79012599