Android对APK进⾏v1+v2+v3签名
在AndroidStudio中,我们可以很⽅便的对apk进⾏打包与签名,也可以选择V1或V2签名;然⽽,有些时候(⽐如反编译重新打包、apk 加固后...),我们却需要直接对APk进⾏签名.
在Android7.0引⼊了jdk7才⽀持的V2签名,这⼀签名不需要对所有⽂件进⾏摘要计算、且增加了APK 签名分块并且该分块有特定格式,所以,使⽤V2签名后,apk的安装速度与完整性保障都有不错的提升;然⽽,由于需要兼容旧版本,V1签名不能完全去掉,现多使⽤
v1+v2(+v3)签名形式。
V1签名(jarsigner⽅式)最基础签名
由于安全漏洞问题,最近对app进⾏了⼀些改善,其中包括使⽤了第三⽅进⾏加固;加固后,必须对apk进⾏重新签名,于是使⽤了以下⽅式:
// apksigner -verbose -keystore (签名地址) -signedjar (签名后的apk地址) (待签名apk地址) (别名)
V2签名(apksigner⽅式)
原来,jarsigner只是对apk进⾏了V1签名;前⾯说到在Android7.0引⼊了V2签名,因此,当进⼊sdk\25.0.0及后续版本,会发现⼀个apksigner.bat执⾏脚本。这⾥我⽤的是29.0.3版本
我们可以通过apksigner进⾏V2签名,当然,apksigner默认是同时⽀持V1与V2的,于是:
(使⽤jar命令时记得指向该jar地址)
//直接⽤apksigner进⾏签名
apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
//使⽤Jar命令进⾏签名
java -jar apksigner.jar sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
签名验证
⾄此,兼容V1、V2的apk签名已完成,我们可以使⽤以下指令验证是否签名成功:
//直接⽤apksigner进⾏验证
apksigner verify -v --print-certs (apk地址)
android获取真正的签名//使⽤Jar命令进⾏验证
java -jar apksigner.jar  verify -v --print-certs (apk地址)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。