首页 > 解决方案 > Google Play 突然反对我的应用签名无效

问题描述

我有一个应用程序正好在它的发布日期之上(从 Beta 移动到发布候选)。一切都很好,但我刚刚将 Android Studio 从 rc6 升级到了 rc7。该应用程序(游戏)是使用 Unity 2018.1 开发的,一切似乎都很好;但是在将 apk 上传到 Play 商店时,我突然收到消息:

“您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误:JAR_SIG_NO_MANIFEST:缺少 META-INF/MANIFEST.MF”

我不是一个经验丰富的 Android 开发人员(可能是四个月前才开始接触它),所以我不完全确定这是什么。我和以前一样使用相同的密钥库,Unity 编译 APK 没有任何抱怨。(这实际上是 rc1 编译。)

谁能给我一个想法可能发生了什么变化?我的签名/清单怎么了?

(附录:)

根据要求,我的播放器设置的屏幕截图,来自 Unity。请注意,我已经验证包名称完全准确,预加载的资产是一个空列表,并且我的密钥库没有进行任何更改。此外,我们尝试将 APK 上传到新的商店条目,以防出现这种情况,但我们得到了完全相同的错误。

错误项目的播放器设置

目前,我们正在尝试进一步升级 Android Studio,并下载额外的 Android API(从 4.1 到 8.1 的所有内容,而不仅仅是其中的一部分)。尽管术语“API”具有传统含义,但在我看来,在这种情况下它可能与硬件依赖关系有关,并且可能会破坏清单文件。如果它解决了任何问题,我一定会自己回答这个问题。

标签: androidunity3dgoogle-playmanifestsigning

解决方案


解决了!

似乎由于某种原因,更新 SDK 让我没有某些 API 级别。这可能会导致一个可编译但相当混乱的 APK;Google Play 正在寻找不存在的块的清单引用。

为了说明,我将我的应用程序设置为在 4.1 (API 16) 到 8.1 (API 27) 上运行。我的系统上只有 API 27。为什么这至少没有导致编译器发出警告,老实说,我不知道;但是在进入 android SDK 的 bin 目录并运行之后:

sdkmanager "platforms;android-[API number]"

对于我丢失的每个 API,然后重新启动(Windows 和所有...),它编译了一个足够的 APK,该 APK 在商店中被接受。

整个磨难实际上非常累人,如果我在靠近裸机的地方舒适地工作,解决方案可能很明显。道德?在确定您有几天的消耗性之前,不要更新 SDK 中期项目。

希望这个解决方案能帮助其他有同样问题的人。


推荐阅读