Android之通过apksigner对apk进行签名
2019-10-19 本文已影响0人
瀚海来客
检查签名:
keytool -list -printcert -jarfile xxx.apk //针对apk
keytool -list -v -keystore debug.keystore //针对签名文件
V1签名方式
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
V2签名方式
[转载自]https://www.jianshu.com/p/e1e2fd05bb62
360官方提供的签名工具qihoo apk signer,是采用的7.0以前的v1签名
在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2签名方式,故以下操作需要在25或者25以上版本的SDK的build-tools\版本号的目录下进行
第一步:打开cmd,把目录切换到SDK的build-tools目录下(例如 xxx\build-tools\28.0.3\),执行:
-f : 输出文件覆盖源文件
-v : 详细的输出log
-p : outfile.zip should use the same page alignment for all shared object files within infile.zip
-c : 检查当前APK是否已经执行过Align优化。
另外上面的数字4是代表按照4字节(32位)边界对齐。
zipalign.exe -v -p 4 input.apk output.apk
第二步:把目录切到SDK\build-tools\版本号\lib下
java -jar apksigner.jar sign //执行签名操作
--ks *** //签名证书路径
--ks-key-alias *** //生成jks/keystore时指定的alias
--ks-pass pass:*** //KeyStore密码
--key-pass pass:*** //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk //输出路径
input.apk //被签名的apk
java -jar apksigner.jar sign --ks *** --ks-key-alias *** --ks-pass pass:*** --key-pass pass:*** --out output.apk input.apk
第三步:检查apk是否已经签名
java -jar apksigner.jar verify -v my.apk