- 参考连接
- 工具用到的是Android-Crack-Tool
1. 重新签名apk, apksigner,默认同时使用V1和V2签名
进入Android SDK/build-tools/SDK版本, 输入命令apksigner sign --ks 密钥库名 --ks-key-alias 密钥别名 xxx.apk
若密钥库中有多个密钥对,则必须指定密钥别名apksigner sign --ks 密钥库名 --ks-key-alias 密钥别名 xxx.apk
禁用V2签名:
apksigner sign --v2-signing-enabled false --ks 密钥库名 xxx.apk
参数:
--ks-key-alias 密钥别名,若密钥库有一个密钥对,则可省略,反之必选
--v1-signing-enabled 是否开启V1签名,默认开启
--v2-signing-enabled 是否开启V2签名,默认开启
例如:
在debug.keystore密钥库只有一个密钥对:
apksigner sign --ks debug.keystore MyApp.apk
在debug.keystore密钥库中有多个密钥对,所以必须指定密钥别名
apksigner sign --ks debug.keystore --ks-key-alias androiddebugkey MyApp.apk
1. 签名验证
1.方法一(keytool,只支持V1签名校验)
进入JDK/bin, 输入命令
keytool -printcert -jarfile MyApp.apk (显示签名证书信息)
参数:
-printcert 打印证书内容
-jarfile <filename> 已签名的jar文件 或apk文件
2.方法二(apksigner,支持V1和V2签名校验)
进入Android SDK/build-tools/SDK版本(如果配置了Android SDK环境变量可以直接根目录用), 输入命令
apksigner verify -v --print-certs xxx.apk
参数:
-v, --verbose 显示详情(显示是否使用V1和V2签名)
--print-certs 显示签名证书信息
签名方式
- 查看apk签名信息
切换到你安装的Android sdk目录下的build-tools中,输入 apksigner verify -v [apk的路径], 下面这种是只有v1签名,没有v2签名
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): false
- 利用apksigner 对apk进行签名
java -jar apksigner.jar sign //执行签名操作
--ks 你的jks路径 //jks签名证书路径
--ks-key-alias 你的alias //生成jks时指定的alias
--ks-pass pass:你的密码 //KeyStore密码
--key-pass pass:你的密码 //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk //输出路径
input.apk //被签名的apk
java -jar apksigner.jar sign --ks /Users/***/Documents/work/keystore/test.keystore --ks-key-alias testkey --ks-pass pass:test123321 --key-pass pass:test123321 --out a_dangame_release_sign.apk input.apk
apksigner sign --ks /Users/***/Documents/work/keystore/test.keystore --ks-key-alias testkey --ks-pass pass:test123321 --key-pass pass:test123321 --out a_dangame_release_sign.apk input.apk