当试图上传到生产环境时,Android 已签名 APK 显示为未签名 APK

我在 Android Studio 2.3中签署了我的 APK (build-> generatedsignedAPK)。当我试图上传到谷歌播放商店它显示的错误,我已经上传了未签名的 APK。有人能回答为什么会发生这种情况,以及如何解决这个问题吗?

45297 次浏览

这是一个来自谷歌的问题,两天前在 这一页中发布

当我在 Android Studio 2.3中生成已签名的 APK 时,选择了 V1(Jar Signature)而不是 V2(Full APK Signature) ,它就成功上传了

如何使用 V2签署 APK

Https://developer.android.com/studio/command-line/apksigner.html

步骤1) Android Studio,选择 View > Tool Windows > Terminal

    gradlew assembleRelease

2)使用 zipalign 对齐未签名的 APK:

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

3)使用 apksigner 用你的私钥签署你的 APK:

apksigner sign --ks my-release-key.jks my-app-unsigned-aligned.apk --out my-app-release.apk

注意: 要使用 apksigner 工具,您必须安装24.0.3或更高版本的 Android SDK Build Tools。您可以使用 SDK 管理器更新此包。

4)确认你的 APK 已签署:

apksigner verify my-app-release.apk

注意: 步骤2到4在命令提示符 G 中执行: AndroidStudio Sdk build-tools 25.0.0

这是因为您在使用发布版本时只使用了 v2签名。

那么 v1和 v2提到了什么?

V1是默认的签名机制,v2是添加的最新机制,验证速度快得多。这意味着在 Android Nougat (Android 7.0,API Level 24)和更新版本上,v2签名的 APK 安装/更新会更快一些。

那你该怎么办?

如果你想签署应用程序没有任何改变

检查默认的 v1(jar Signature only)。

如果你想要最新的签名和对7.x 版本的支持

检查 v2(完全 Apk 签名) ,这也减少了应用程序的大小。

如果你希望应用程序更小,能够安装更快,兼容所有 Android 版本。

同时检查 v1和 v2。

PS: 只适用于与 Studio 签署应用程序,不适用于使用管道构建应用程序。

更多参考资料

Android 7.0引入了 APK 签名方案 v2,这是一个新的应用程序签名方案,提供了更快的应用程序安装时间和更多的保护,以防止未经授权的修改 APK 文件。

在生成带签名的 apk 时,有两个复选框。

  1. V1(罐子签名)
  2. V2(完整的 apk 签名)

我们有三种选择:

  1. Select V1(对于旧版本的签名)-apk 成功上传

  2. Select V2(对于较新的签名版本)-请注意,单独选择此选项不会起作用。

  3. Select V1 and V2(针对较旧和较新的版本)-apk 成功上传

为什么单独选择 V2不起作用

因为 APK 签名方案 v2是在 Android 7.0(Nougat) .为了使 APK 可以安装在 Android 6.0(棉花糖)和较旧的设备上,在使用 v2方案签名之前,应该使用 JAR 签名对 APK 进行签名。中引入的

了解更多信息

签署 V1V2。它将成功上传。

如果你达到了这个目标,使用 Android Studio 3.3,无论你是否选中 Signature 复选框,错误都会不断出现,尝试手动删除 app/build 文件夹。

资料来源: https://stackoverflow.com/a/54213942/787511

根据所附的截图,选择 V1(罐签名)和 V2(完全 APK 签名)。它将工作。

enter image description here