Android之通过apksigner对apk进行签名

检查签名:
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

你可能感兴趣的:(Android之通过apksigner对apk进行签名)