如何使用 "APK Signature Scheme v3 and v4" 签署我的应用程序?
How can I sign my app with "APK Signature Scheme v3 and v4"?
在文档中,有关于签名 v3 和 v4 的解释:
https://source.android.com/security/apksigning/v3
但是,当我尝试在 android studio 中使用 Build>Generate signed apk/bundle 对我的应用程序进行签名时,我可以只选中 v1(jar 签名)和 v2(完整的 apk 签名)和v3 签名没有选项。
如何使用签名方案 v3 和 v4 对我的应用程序进行签名?
谢谢。
使用命令行手动创建签名版本。
请找到创建 v3 和 v4 方案签名版本的步骤,
Select build-tools.0.0 或更新版本.
注意:您可以在 SDK 位置找到构建工具文件夹。
\Users\AppData\Local\Android\Sdk\build-tools.0.0
Zipalign - 对齐未签名的 APK
zipalign -v -p 4 app-production-debug.apk my-app-unsigned-aligned.apk
注:
app-production-debug.apk - 一个。您从 Android studio 通过构建-> 构建捆绑包/APK(s)-> 构建 APK(s)
创建的 Apk 文件
my-app-unsigned-aligned.apk - 该文件将在同一目录中创建(您也可以定义路径)。
- Apksigner - 使用您的私钥签署您的 APK
apksigner sign --ks release-keystore.jks --out my-app-release.apk
my-app-unsigned-aligned.apk
注意:
一种。发布-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 - 已签名的发布版本将在同一目录中生成(您也可以定义路径)。
- 验证:
apksigner verify --verbose my-app-release.apk
更新以验证 v4:
apksigner verify -v -v4-signature-file my-app-release.apk.idsig my-app-release.apk
发布apk中可以看到验证过的方案
验证
使用 v1 方案(JAR 签名)验证:正确
已使用 v2 方案(APK 签名方案 v2)验证:true
已使用 v3 方案(APK 签名方案 v3)验证:true
已使用 v4 方案(APK 签名方案 v4)验证:true
截至今天,Android Studio 支持 v3 和 v 4 Android Gradle 插件 4.2
要在您的构建中启用其中一种或两种格式,请将以下属性添加到您的模块级别 build.gradle 或 build.gradle.kts 文件:
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
在文档中,有关于签名 v3 和 v4 的解释: https://source.android.com/security/apksigning/v3
但是,当我尝试在 android studio 中使用 Build>Generate signed apk/bundle 对我的应用程序进行签名时,我可以只选中 v1(jar 签名)和 v2(完整的 apk 签名)和v3 签名没有选项。
如何使用签名方案 v3 和 v4 对我的应用程序进行签名?
谢谢。
使用命令行手动创建签名版本。
请找到创建 v3 和 v4 方案签名版本的步骤,
Select build-tools.0.0 或更新版本.
注意:您可以在 SDK 位置找到构建工具文件夹。
\Users\AppData\Local\Android\Sdk\build-tools.0.0
Zipalign - 对齐未签名的 APK
zipalign -v -p 4 app-production-debug.apk my-app-unsigned-aligned.apk
注:
app-production-debug.apk - 一个。您从 Android studio 通过构建-> 构建捆绑包/APK(s)-> 构建 APK(s)
创建的 Apk 文件my-app-unsigned-aligned.apk - 该文件将在同一目录中创建(您也可以定义路径)。
- Apksigner - 使用您的私钥签署您的 APK
apksigner sign --ks release-keystore.jks --out my-app-release.apk my-app-unsigned-aligned.apk
注意: 一种。发布-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 - 已签名的发布版本将在同一目录中生成(您也可以定义路径)。
- 验证:
apksigner verify --verbose my-app-release.apk
更新以验证 v4:
apksigner verify -v -v4-signature-file my-app-release.apk.idsig my-app-release.apk
发布apk中可以看到验证过的方案
验证
使用 v1 方案(JAR 签名)验证:正确
已使用 v2 方案(APK 签名方案 v2)验证:true
已使用 v3 方案(APK 签名方案 v3)验证:true
已使用 v4 方案(APK 签名方案 v4)验证:true
截至今天,Android Studio 支持 v3 和 v 4 Android Gradle 插件 4.2 要在您的构建中启用其中一种或两种格式,请将以下属性添加到您的模块级别 build.gradle 或 build.gradle.kts 文件:
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}