apksigner 作为新一代的apk签名工具,它比jarsigner更加的安全,高效。现在都必须要用apksigner了,jarsigner也不介绍了。哈哈哈。
标题基础知识:
签名方式有两种,1、使用签名文件,2、使用私钥和证书
命令:
指定签名文件
–ks
密钥别名
–ks-key-alias
密钥密码(使用的是ks签名方式需要,赋值格式pass:123456)
–ks-pass
签名者私钥的密码。如果私钥受密码保护,则需要该密码。(–key --cert 签名方式使用该种方式签名才需要,pass:123456)
–key-pass
指定签名后的apk输出路径
–out
是否开启v1签名,值为<true | false>,该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
–v1-signing-enabled
是否开启v2签名,值为<true | false>该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
–v2-signing-enabled
是否开启v3签名,值为<true | false>该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
–v3-signing-enabled
是否开启v4签名,值为<true | false>该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
–v4-signing-enabled
两者都是查看日志信息
-v,–verbose
使用 --key 和 --cert 选项分别指定私钥文件和证书文件。私钥文件必须使用 PKCS #8 格式,证书文件必须使用 X.509 格式
–key --cert
指定多个签名文件(基本不用,不举例了)
–next-signer
验证签名apk
verify
打印签名信息
–print-certs
实例:
apksigner sign --ks keystore.jks |–key key.pk8 --cert cert.x509.pem [signer_options] app-name.apk
基础签名(需要手动输入密码,默认签名后的apk会替换原apk)
apksigner sign --ks ./signtest3.keystore ./outputfilename.apk
完善的签名命令(开启日志,开启v1,v2签名,指定输出路径文件,不需要手动输入密码,–ks-key-alias signtest2命令可有可无)
apksigner sign --verbose --v1-signing-enabled true --v2-signing-enabled true --ks ./signtest3.keystore --ks-pass pass:a123456 --ks-key-alias signtest2 --out ./test/a.apk ./outputfilename.apk
使用私钥和证书方式进行签名(其他配置可参考上面的命令,因为基本不用,所以不写了)
apksigner sign --key release.pk8 --cert release.x509.pem app.apk
验证签名并查看启用了哪种签名方式:
apksigner verify -v a.apk
打印签名信息(签名的sha1,sha256,md5是以certificate开头的部分,public key开头部分是公钥的值)
apksigner verify -v --print-certs a.apk
问题:
Unexpected parameter(s) after input APK (–out)
要把 --out ./test/a.apk 命令放在未签名apk的前面