安卓apk签名有了v1、v2、v3说明
Android APK签名机制
应用签名主要是避免外部恶意解压、破解或者反编译修改内容,签名的本质是:
认证:Android 平台上运行的每个应用都必须有开发者的签名。在安装应用时,软件包管理器会验证 APK 是否已经过适当签名,安装程序会拒绝没有获得签名就尝试安装应用。
验证完整性:软件包管理器在安装应用前会验证应用摘要,如果破解者修改了 apk 里的内容,那么摘要就不再匹配,验证失败。
截止到Android12,Android支持三种应用签名方案
v1:基于jar签名
v2:提高验证性能&覆盖范围(Android 7.0 Nougat引入)
v3:支持密钥轮换(Android 9.0 Pie引入)
为了提高兼容性,必须按照v1,v2,v3的先后顺序采用签名方案,低版本平台会忽略高版本的签名方案在APK中添加额外数据,具体流程图如下:
apk 签名有了 v3 还需要 v1 和 v2 吗?
在APK签名中,V1、V2和V3是不同版本的签名机制,各自有不同的作用:
-
V1(JAR签名):
-
基于JAR签名,兼容性最好,所有Android版本都支持。
-
主要缺点是安全性较低,容易被篡改。
-
-
V2(APK签名方案):
-
Android 7.0(API 24)引入,增强了安全性,签名信息存储在APK的特定区块,防止篡改。
-
不兼容Android 7.0以下设备。
-
-
V3(APK签名方案v3):
-
Android 9(API 28)引入,支持密钥轮换,允许在不影响应用更新的情况下更换签名密钥。
-
同样不兼容Android 9以下设备。
-
是否需要同时使用V1、V2和V3?
-
兼容性:为了确保APK在所有Android版本上都能安装,建议同时使用V1和V2签名。V3签名主要用于支持密钥轮换,适合需要此功能的应用。
-
安全性:V2和V3签名更安全,推荐使用。V1签名由于安全性较低,建议仅在必要时保留。