如何使用“ APK签名方案v3”对我的应用进行签名?

时间:2019-12-09 11:38:29

标签: android android-studio apk sign

在文档中,有关于签名v3的说明: https://source.android.com/security/apksigning/v3

但是当我尝试使用Build> android中的android> app签名我的应用程序时,生成签名的apk /捆绑包,我可以仅选中v1(jar签名)和v2(完整apk签名)的复选框,而v3签名则没有选项。

如何使用签名方案v3对我的应用程序签名?

谢谢。

3 个答案:

答案 0 :(得分:2)

正如@Pierre所说,Android Studio不支持创建经过v3方案验证的释放apk。

为此,我们需要使用命令行手动创建签名的版本。

请找到创建v3方案签名构建的步骤,

  1. 选择build-tools \ 29.0.2或更高版本。

    注意:您可以在SDK位置内找到build-tools文件夹。

    \ Users \ AppData \ Local \ Android \ Sdk \ build-tools \ 29.0.2

  2. Zipalign-对齐未签名的APK

    zipalign -v -p 4 app-production-debug.apk my-app-unsigned-aligned.apk

    注意:

    app-production-debug.apk-a。通过Build-> Build Bundles(s)/ APK(s)-> Build APK(s)

    从Android Studio创建的APK文件

    my-app-unsigned-aligned.apk-文件将在同一目录中创建(您也可以定义路径)。

  3. Apksigner-使用私钥对APK进行签名

apksigner标志--ks release-keystore.jks --out my-app-release.apk my-app-unsigned-aligned.apk

注意: 一种。 release-keystore.jks -我们在build.gradle文件

中配置的密钥库文件
   android {
                signingConfigs {
                        production {
                            storeFile file('release-keystore.jks')
                            storePassword 'XXXX'
                            keyAlias = 'AAAAA'
                            keyPassword 'XXXX'
                        }
                }
            buildTypes {
                        release {
                            ...............
                            signingConfig signingConfigs.production 

                        }
            }
        }

b。 my-app-release.apk-签名发布版本将在同一目录中生成(您也可以定义路径)。

  1. 验证:

apksigner验证--verbose my-app-release.apk

  1. 您可以在发行版APK中看到经过验证的方案。

    验证

    使用v1方案(JAR签名)验证:是

    使用v2方案(APK签名方案v2)验证:是

    使用v3方案(APK签名方案v3)验证:是

答案 1 :(得分:0)

从今天开始,您无法使用Gradle或Android Studio的v3签名方案进行签名。

如果您希望使用v3签名方案进行签名,则需要使用apksigner手动进行签名。

请注意,v3签名方案只是v2签名方案的扩展,除了允许旋转应用程序签名密钥外,它还允许。该功能仅在Android P设备上受支持,截至2019年底,Google Play尚不支持(我不确定其他发布平台)。

答案 2 :(得分:0)

截至今天,Android Studio 支持 v3 和 v4 以及 Android Gradle 插件 4.2 要在构建中启用这些格式中的一种或两种,请将以下属性添加到模块级 build.gradle 或 build.gradle.kts 文件中:

C++