什么是Android签名
在Android开发中,签名是一个关键步骤,用于确保应用程序的完整性和身份验证。签名过程涉及到使用数字证书对应用程序进行加密,以确保其内容在传输和分发过程中未被篡改。
什么是V1和V2签名
V1签名(jar signature): 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