我的 Android 项目之一正在生成未签名的 APK。我正在使用下面提供的配置,然后验证生成的 APK。 我确定 Gradle 正在使用我提供的 keystore 文件,因为我尝试更改路径和密码,但构建失败。
APK 毕竟没有签名
jarsigner -verify -verbose -certs/Users/viliuskraujutis/.../path-to-newly-created.apk
输出是这样的:
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
no manifest.
jar is unsigned.
从 build.gradle 签名
对于我这样签名的上下文:
android {
...
signingConfigs {
release {
storeFile file("my-key-used-in-other-successful-project.keystore")
storePassword "my-password-used-in-other-successful-project"
keyAlias "my-alias-used-in-other-successful-project"
keyPassword "my-password-used-in-other-successful-project"
}
}
最佳答案
您的 minSdkVersion 可能为 24 或更高。如果是这种情况,那么 AGP 将使用一种更高效的签名方案,称为“V2 签名”,并且由于 24+ 上的所有 Android 设备都支持此方案,因此不再需要使用“v1 方案”进行签名(即 jar 签名)。 V2 方案完全独立于 jar 签名,这就是 jarsigner 认为 APK 未签名的原因。如果您使用 apksigner
(Android 工具中提供),那么您可以检查您的 APK 是否确实已正确签名。
关于apk - 为什么在对我的 APK 执行 "no manifest."时会得到 "jar is unsigned."和 "jarsigner -verify -verbose -certs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73678450/