gpt4 book ai didi

android - 上传新 APK 版本时的签名错误消息(API 级别 8 不支持 SHA1)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:13 28 4
gpt4 key购买 nike

我在 2010 年发布了一个应用程序。那时,我创建了一个本地 keystore 和一个 key ,我从未更改并用于我从那时起发布的该应用程序的所有(大约 30 个)版本。

我从来没有遇到过任何问题,它总是运行良好,在我使用 Eclipse 开发的日子里,在我切换到 Android Studio 的最近几年也没有。

我发布的最后一个版本是 2016 年 12 月 23 日。现在我想发布一个新的,用 Android Studio 生成一个签名的 APK,将它上传到 Developer Console...并收到以下错误消息:

Upload failed - You uploaded an APK with an invalid signature (learn more about signing). Error from apksigner: ERROR (Jar signer CERT.DSA): JAR signature META-INF/CERT.DSA uses digest algorithm SHA-1 and signature algorithm SHA-1 with DSA which is not supported on API Level(s) 8 for which this APK is being verified

我尝试了这些(新可用的)签名版本选项的组合(总是得到相同的结果):

  • 仅“V1(Jar 签名)”
  • “V1(Jar 签名)”和“V2(完整 APK 签名)”

我使用的是 Android Studio 2.3.3,buildToolsVersion 25.0.0 和 Gradle 版本 3.3。

最佳答案

您看到的错误消息是此 APK 无法安装在 Android Froyo(API 级别 8)上。 APK 的 JAR 签名 (META-INF/CERT.DSA) 使用 OID 1.2.840.10040.4.3 (SHA-1 with DSA) 来指定签名算法。此 OID 在 Android 上仅在 API 级别 9 的 JAR 签名中受支持,但您的 APK 的 AndroidManifest.xml 指定 - 通过 android:minSdkVersion 属性 - APK 支持 API 级别8. 对于 DSA,JAR 签名中使用的最佳签名算法 OID 是 1.2.840.10040.4.1(DSA,不是 SHA-1 with DSA)。生成的加密签名完全相同,只是所有 Android 版本的 JAR 签名都支持此 OID。虽然签名工具通常不提供这种级别的控制,但它们应该选择一个有效的 OID。

Android Studio、Android Plugin for Gradle 和 apksigner 都应该生成正确签名的 APK,除非您指定自定义参数。例如,您的 build.gradle 文件是否偶然指定了 minSdkVersion 9 或更高版本?或者,您可能正在使用不了解 Android 规则的 jarsigner 对 APK 进行发布签名...

想法:

  • 如果您使用 jarsigner 进行发布签名,请切换到 apksigner 或使用 Android Studio/Android Plugin for Gradle 进行发布签名。例如,要使用 apksigner 重新签署 APK:

    apksigner sign --ks my.keystore app.apk
  • 如果您使用 Android Studio/Android Plugin for Gradle 进行发布签名,请在您的 build.gradle 文件中指定与AndroidManifest.xml。或者,也许从 build.gradle 文件中删除 minSdkVersion 会使 Android Studio/Android 插件使用 AndroidManifest.xml 中的 minSdkVersion?我对此有些怀疑,因为 Android Studio 2.3.3 在签署此类 APK 时应该使用正确/安全的 OID 1.2.840.10040.4.1...

  • 如果您愿意放弃对 Froyo 的支持,请将 AndroidManifest.xml 中的 minSdkVersion 调整为 9 或更高版本。

P. S. 检查您的 APK 是否正确签名并查看 Google Play 在上传时可能报告的错误:

apksigner verify my.apk

关于android - 上传新 APK 版本时的签名错误消息(API 级别 8 不支持 SHA1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778703/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com