注:对于 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 安装成功
安装失败时提示:
安装成功时提示: