Android 签名方法---同时使用V1和V2签名

什么是V1和V2签名

        V1签名(jar signature):

        V1是Android7.0之前的签名方式,使用JDK中的jar signature方式对APK进行签名打包。签名完成后会生成一个META-INF文件夹,里面有三个文件:MANIFEST.MF,CERT.RSA,CERT.SF,是用来记录签名信息的。简单来说V1 签名是对压缩包中单个文件签名验证。

        V2签名(Full apk signature)

        V2是Android7.0推出的签名方式,使用Full Apk Signature方式对APK进行签名打包。V2是对zip压缩包的整个文件验证, 签名后不能修改压缩包。

V2签名的优点

        V2是验证压缩文件的所有字节码,因此,在签名完成后无法再更改,签名更安全;

        V2签名由于不需要解压缩然后验证,因此可以缩短在设备上进行验证的时间,使安装速度加快。

        既然V2是Android7.0才推出的,那么在Android7.0以下的系统上安装V2签名会有什么问题呢?答案是:Android7.0以下的系统上没有这种签名的验证方式,因此系统会提示应用未安装。那要怎么解决在Android7.0以下系统上的签名问题呢,那就是同时对apk进行V1和V2签名

签名步骤

        1、生成自己的签名文件,比如我自己的my.jks

        keytool -genkey -v -keystore my.keystore -alias mykey -storepass 123456 -keypass 123456 -keyalg RSA -validity 36000

        2、我们采用apksigner来对apk进行签名,apksigner是Android SDK自带的一个签名工具,默认是同时使用V1和V2签名

        输入如下命令对apk进行签名:

        apksigner sign --ks my.jks --ks-key-alias 密钥别名 xxx.apk

        此时,签名之后的apk就同时具有V1和V2签名了。

验证方法

        同样使用apksigner进行签名验证,输入命令:

        apksigner verify -v --print-certs xxx.apk

猜你喜欢

转载自blog.csdn.net/cike123_/article/details/129087800