Android 签名时 v2 与 v1 的选择

注:对于 v2 与 v1 的对比不在此文讨论范围


结论:

  • 一定可行的方案: 只使用 v1 方案
  • 不一定可行的方案:同时使用 v1 和 v2 方案
  • 对 7.0 以下一定不行的方案:只使用 v2 方案
PS:
    如果要支持 Android 7.0 以下版本,那么尽量同时选择两种签
    名方式,但是一旦遇到签名问题,可以只使用 v1 签名方案

签名打包时签名版本(Signature Versions)的选择
这里写图片描述
参考链接:https://source.android.com/security/apksigning/v2#verification

在 Android 7.0 以上版本的设备上,APK 可以根据Full Apk Signature(v2 方案) 或者 JAR-signed( v1方案)进行验证;
而对于7.0以下版本的设备其会忽略 v2 版本的签名,只验证 v1 签名

如图所示:
这里写图片描述

真机测试:
    三个包
        1、only_v2:
            只使用 v2 方案进行签名
            预计只能安装在 7.0 以上设备;7.0 以下设备会显示签名失败
        2、only_jar_sigh:
            只使用 jar_sigh(即 v2 方案)进行签名
            预计能安装在所有设备上
        3、both_jar_and_v22:
            同时使用 v1 和 v2 两种签名方式
            预计一般能正常安装在普通手机上,某些设备可能无法正常安装
    三台设备:
        Nexus 5X:
            Android 版本:8.0.0
        Le X820:乐视手机
            Android 版本:6.0.1
        红米1:
            Android 版本:4.4.2
    安装测试:
    1、分别将 1、2、3 包安装到 Nexus 5X 上,都能正常安装与启动
    2、将1 包尝试安装到 Le X820 上,安装不成功;2、3 安装成功
    3、将1 包尝试安装到红米1上,安装不成功;2、3 安装成功

安装失败时提示:
这里写图片描述
安装成功时提示:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/lonewolf521125/article/details/74535413