-
查看 keystore
从Java 9开始,keytool命令默认不再生成MD5证书指纹, 可以使用 apksigner
keytool -list -v -keystore debug.keystore apksigner verify --print-certs your.apk -
查看三方应用或是系统应用签名
用
winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件keytool -printcert -file META-INF/CERT.RSA -
给Apk签名
-
jarsigner
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]jarsigner命令格式:-verbose输出详细信息-keystore密钥库位置-signedjar要生成的文件 要签名的文件 密钥库文件- keystorePath--参数代表keyStore的绝对路径,如D:\keystore
- apkOut--参数代表签名后的apk路径,如D:\signed.apk
- apkOut--参数代表签名后的apk路径,如D:\signed.apk
- apkin--参数代表在腾讯应用中心下载的未签名apk,默认名称为tap_unsign.apk
- alias--参数代表签名用的alias名称(创建keyStore时所填写),如timdong
jarsigner -verbose -keystore debug.keystore -signedjar test2.apk tap_unsign1.apk timdong -
apksigner (推荐)
# 查看签名帮助 apksigner sign -h # 如果你不使用 `--in` 指定要签名的输入文件 input.apk, 那么 input.apk 必须在所有参数之后 apksigner sign --keystore release.jks input.apk # 如果未使用 `--out` 指定输出文件, input.apk 会被输出文件直接覆盖 apksigner sign --ks release.jks input.apk apksigner sign --ks release.jks --ks-key-alias systemkey sign.apk # pass:123456 可以使用环境变化代替: env:<ENV_NAME> apksigner sign --ks E:\Tmp\jw.jks --ks-key-alias xxx --ks-pass pass:123456 --v3-signing-enabled true --in E:\Tmp\unsigned.apk --out E:\Tmp\out-signed.apk apksigner sign --key release.pk8 --cert release.x509.pem --key-pas pass:12345 app.apk- 使用
--ks选项指定密钥库文件。
- 使用
-
-
系统签名
用Android提供的Signapk工具来签名,signapk的源代码是在"build/tools/signapk"下
java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk # 使用私钥和证书签名:--key key.pk8 --cert cert.x509.pem apksigner sign --key release.pk8 --cert release.x509.pem input.apk output.apk- 使用
--key和--cert选项分别指定私钥文件和证书文件。私钥文件必须使用 PKCS #8 格式,证书文件必须使用 X.509 格式。
- 使用
-
apk打包时的系统签名
之后就可以作为普通的签名证书使用,打好包即为系统签名
./keytool-importkeypair -k ./tg.jks -p myPassword -pk8 platform.pk8 -cert platform.x509.pem -alias myAlias