如何使用“APK Signature Scheme v3”为我的应用签名?

Nab*_*bzi 2 android sign apk android-studio

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

但是,当我尝试使用 Build>Generate signed apk/bundle 在 android studio 中签署我的应用程序时,我可以只选中 v1(jar 签名)和 v2(完整 apk 签名)的复选框,并且没有 v3 签名的选项。

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

谢谢你。

Ayo*_*hia 11

截至今天,Android Studio 通过 Android Gradle Plugin 4.2 支持 v3 和 v 4 要在构建中启用其中一种或两种格式,请将以下属性添加到模块级 build.gradle 或 build.gradle.kts 文件中:

android {
   ...
   signingConfigs {
      config {
          ...
          enableV3Signing = true
          enableV4Signing = true
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 上面的配置enableV3Signing和enableV4Signing不起作用,我是否必须将我的gradle版本升级到7或更高版本? (4认同)

Sri*_*san 5

正如@Pierre 所说,Android 工作室不支持创建 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 sign --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 

                        }
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

  1. 核实:

apksigner verify --verbose my-app-release.apk

  1. 您可以看到在发布 apk 中验证的方案。

    验证

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

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

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