前置工具
apksigner : SDk目录\build-tools\33.0.1
签名文件: test.jks
签名文件alias: test
签名文件密码: test_pwd
待签名APK: unsigned.apk
新的签名文件: test_new.jks (测试V3轮替签名使用)
新的签名文件alias: test_new (测试V3轮替签名使用)
新签名文件密码: test_new_pwd (测试V3轮替签名使用)
apksigner 工具进行 APK 签名
#cd 到 SDk目录\build-tools\33.0.1
#1、普通签名指令
apksigner sign --ks test.jks --ks-key-alias test --out signed.apk unsigned.apk
#2、带密码的签名指令
apksigner sign --ks test.jks --ks-key-alias test --ks-pass pass:"test_pwd" --out signed.apk unsigned.apk
#3、V3轮替签名
#3.1 生成 keyline 文件,用于后续签名
apksigner rotate --out keyline --old-signer --ks test.jks --new-signer --ks test_new.jks
#3.2 轮替签名
apksigner sign --ks test.jks --next-signer --ks test_new.jks --lineage keyline --out signed.apk unsigned.apk
apksigner 工具校验 APK 签名
# 验证V1、V2、V3签名
apksigner verify -v --print-certs signed.apk
# 验证V4签名
apksigner verify -v --print-certs -v4-signature-file signed.apk.idsig signed.apk
V4 签名时,会同时生成 signed.apk.idsig 文件 (V4签名信息单独保存在该文件中)(V4签名,需配合 V3 和 V2 签名一同使用)
Android Studio 中配置 V1-V4 签名
android {
signingConfigs {
release {
keyAlias 'test'
keyPassword 'test_pwd'
storeFile file("test.jks")
storePassword 'test_pwd'
enableV1Signing true
enableV2Signing true
enableV3Signing true
enableV4Signing true
}
}
}
只验证了 AGP 7.3 可以使用
enableV3Signing trueenableV4Signing true开启V3V4签名 老版本 AGP 可通过v1SigningEnabledv2SigningEnabled开启V1V2签名