我有一个应用刚好在其发布日期之前(从 Beta 变为 Release Candidate)。一切都很好,但我刚刚将 Android Studio 从 rc6 升级到 rc7。该应用程序(游戏)是使用Unity 2018.1开发的,一切似乎都很好;但是在将 apk 上传到 Play 商店时,我突然收到消息:
“您上传了带有无效签名的 APK(了解有关签名的更多信息)。来自 apksigner 的错误:错误:JAR_SIG_NO_MANIFEST:缺少 META-INF/MANIFEST.MF”
我不是经验丰富的 Android 开发人员(大概四个月前才接触到它),所以我不完全确定这是关于什么的。我使用的是与以往相同的 keystore ,Unity 毫无怨言地编译了 APK。 (这实际上是 rc1 编译。)
谁能告诉我可能发生了什么变化?我的签名/ list 怎么了?
(附录:)
根据要求,我的播放器设置的屏幕截图来自 Unity。请注意,我已验证包名称完全准确,预加载的 Assets 是一个空列表,并且我的 keystore 没有进行任何更改。此外,我们尝试将 APK 上传到新的商店条目,以防出现这种情况,但我们得到了完全相同的错误。
目前,我们正在尝试进一步升级 Android Studio,并下载额外的 Android API(从 4.1 到 8.1 的所有内容,而不仅仅是其中的一部分)。尽管术语“API”具有传统含义,但在我看来,在这种情况下它可能与硬件依赖性有关,并且可能会破坏 list 文件。如果它能解决任何问题,我一定会亲自回答。
最佳答案
解决了!
似乎出于某种原因,更新 SDK 使我没有某些 API 级别。这可能会导致一个可编译但相当困惑的 APK; Google Play 正在寻找不存在的 block 的 list 引用。
为了说明,我将我的应用设置为在 4.1 (API 16) 到 8.1 (API 27) 上运行。我的系统上只有 API 27。为什么这至少没有导致编译器发出警告,我真的不知道;但是在进入 android SDK 的 bin 目录并运行之后:
sdkmanager "platforms;android-[API number]"
对于我丢失的每个 API,然后重新启动(Windows 和所有...),它编译了一个足够的 APK,该 APK 在商店中被接受。
整个考验实际上非常令人筋疲力尽,如果我能轻松地接近裸机,解决方案可能会很明显。道德?不要在项目中期更新 SDK,直到你确定你有几天可以消耗的时间。
希望这个解决方案能帮助其他遇到同样问题的人。
关于android - Google Play 突然反对我的应用程序签名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520343/