Android V1 V2 V3 V4 签名及 Android Studio 配置

3,679 阅读1分钟

前置工具

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 true enableV4Signing true 开启 V3 V4 签名 老版本 AGP 可通过 v1SigningEnabled v2SigningEnabled 开启 V1 V2 签名

参考