为什么我的 Flutter 应用程序 apk 与任何东西都不兼容,从而阻止了 Amazon Mobile Marketplace 的提交?

问题描述

我在 Deal-O-Round 中有一个小游戏应用程序 Google Play Store,大约 7 年前(2014 年 7 月 6 日 https://smile.amazon.com/Csaba-Toth-Deal-O-Round/dp/B00LK8VBLS/)我也向亚马逊移动市场提交了相同的 APK。 2014 年版本基于 Google PlayN 框架,除了 Android 和 iOS 平台之外,该框架还允许基于网络的演示。很多时间过去了,去年我在 Flutter 中重新实现了整个游戏,这也允许构建除 Android 和 iOS 之外的基于 Web 的演示。

最近,我收到一封来自亚马逊的电子邮件标题为“[需要操作] 目标 API 级别合规性所需的应用更新”,这促使我再次尝试刷新他们商店中的 APK。根据电子邮件,Fire OS 6 版本需要最低 API 级别 25,Fire OS 7 将需要最低 API 级别 28。这是个好消息,我刷新了我的 Flutter 项目,Gradle 升级将最低 SDK API 级别提高到 23。而我目前的目标 API 级别为 29 as seen in my build.gradle。一切都是open source BTW

android {
    compileSdkVersion 29

...

    defaultConfig {
        // Todo: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.dealoround.android"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode FlutterVersionCode.toInteger()
        versionName FlutterVersionName
    }
...

我不确定这是否重要,但我的应用程序开发人员控制台下有一个“测试项”(SKU12345) 应用程序内项处于未完成状态,这肯定是 2013 年以来的一些鬼混,但我的应用程序没有'没有任何应用内付款。 Flutter 版本也没有任何广告,旧版本有(而且我讨厌一些广告项)。

问题来了:

console showing two APKs

new apk compatibility matrix

new apk manifest view

我知道对于最小 SDK 23,我会放弃对 Fire OS 5 的支持,因为这需要最小 SDK 22(顺便说一句,如果需要,我可以恢复到最小 SDK 16)。但还有一点是错误的。我怀疑这可能与 Flutter 无关。我正在使用 V1 和 V2 方法签署 APK。也许是 GET_ACCOUNTSUSE_CREDENTIALSWAKE_LOCK 的额外权限?参考这里是旧的 APK:

old apk manifest view

old apk compatibility matrix

在 Google Play 商店中一切正常。我正在查看 https://developer.amazon.com/docs/app-submission/supported-filters-on-the-amazon-appstore.html,但没有看到我无法使用 GET_ACCOUNTSUSE_CREDENTIALSWAKE_LOCK 的迹象。

解决方法

我回到了我截取屏幕截图的页面。在第一个(“Amazon Fire 平板电脑和手机”)和最后一个(“非亚马逊设备”)标签上,所有小问号都显示一个“Targeted通过当前版本中的另一个 APK。” 提示。我需要更多地研究它,因为它听起来很荒谬。 “Amazon Fire TV” 选项卡的提示显示了一些 minSdkVersion(对于非常旧的设备)和 "android.hardware.touchscreen" 功能提示。我的游戏需要触摸屏,所以这并不奇怪,旧的 APK 也不支持。

阅读有关 Targeted by another APK in the current version. 提示的更多信息https://developer.amazon.com/docs/app-submission/publish-app-upload-apk-files.html#add_multiple_apks “使用第二个 APK,您可以选择对第一个 APK 尚未选择的设备的支持。”。我不知道为什么商店不能自动提供更新的 APK 以及为什么我必须手动切换东西,但好吧,这就是我要做的。

  1. 开始编辑: enter image description here
  2. 关闭旧版 APK 的设备 enter image description here
  3. 关闭旧版 APK 的另一个选项卡: enter image description here
  4. 为较新的 APK 编辑和打开设备。也许这就是为什么会发生这种奇怪的事情,我必须将 minSdk 从 23 减少到 22 以获得更好的覆盖范围: enter image description here

所以 GET_ACCOUTNSUSE_CREDENTIALS 应该不是问题(到目前为止)。如果以上内容对您没有帮助,请查看 https://developer.amazon.com/docs/app-submission/troubleshooting-android-manifest-and-device-targeting.html