v1签名方式
jarsigner -v -keystore [a] -signedjar [b] [c] [d]
-verbose:输出详细信息
[a]:签名文件路径
[b]:签名后的apk文件名
[c]:待签名的apk文件名
[d]:签名文件的别名
例如:
jarsigner -verbose -keystore my.jks -signedjar signed_v1.apk unsign.apk myalias
执行命令,会提示输入密码,输入签名文件密码。
v1+v2签名方式
java -jar apksigner.jar sign --ks [a] --ks-key-alias [b] --ks-pass pass:[c] --key-pass pass:[f] --out [d] [e]
[a]:签名文件路径
[b]:签名文件别名
[c]:签名文件密码(也可以不加--ks-pass pass:[c],执行命令后提示再输入)
[d]:签名后的apk文件名
[e]:待签名的apk文件名
[f]:签名文件别名密码,如果和签名文件密码一致,可以不加
例如:
java -jar apksigner.jar sign --ks my.jks --ks-key-alias myalias --ks-pass pass:123456 --out signed_v1v2.apk unsign.apk
还有个 --key-pass 指的是 key alias 的密码,这个如果跟签名文件密码一样就不用输入,否则上面的命令运行后会提示输入key password,同一个签名文件可以有多个key password,例如打 release 包和 debug 包使用不同的别名及密码签名;
签名完后查看是否是v1v2签名
D:\Android_SDK\build-tools\27.0.3> apksigner verify -v E:\test_signed.apk
查看签名 md5 等信息
D:\test>keytool -list -printcert -jarfile E:\test_signed.apk