Android:"configuration cannot be published" 正在将 APK 上传到 Play 商店

Android: "configuration cannot be published" while Uploading APK to Play Store

需要帮助解决我在尝试更新我们的应用程序时遇到的 Android Play 商店问题。

apk上传完成后出现问题,出现如下信息:

This configuration cannot be published for the following reason(s): It is forbidden that a device upgrading from API levels in range 14-18 to API levels in range 19+ should downgrade from version 10 to version 9, which would occur when Screen layouts containing any of [small, normal, large, xlarge] and Features containing all of [android.hardware.LOCATION, android.hardware.location.GPS, android.hardware.screen.PORTRAIT, android.hardware.TOUCHSCREEN, android.hardware.WIFI]. Some devices are eligible to run multiple APKs. In such a scenario, the device will receive the APK with the higher version code.

有点奇怪的是,Play Store 将我们支持的 API 级别列为 14-18,而我们的 SDK 设置如下:

/* build.gradle */
...
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "<my app id>"
        minSdkVersion 14
        targetSdkVersion 21
    }
...

/* AndroidManifest.xml */
...
android:versionCode="10"
    android:versionName="1.1.1" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />
...

另一个(可能是次要的)问题是以下权限列在 Play 商店的 APK 详细信息选项卡下,尽管我们没有在我们的清单文件中设置它:
android.permission.CHANGE_WIFI_STATE

当我们将 build/target SDK 版本切换到 19 时(就像我们之前所做的那样),Android Studio 正确地抱怨我们没有使用最新的 Android 版本。即便如此,我们仍然看到上传问题。

我们的配置中是否还有其他错误? 预先感谢您的协助!

好的,我终于设法解决了这个问题。

  1. 使用 aapt 查看 Play 商店如何解析 apk
  2. 发现我正在使用的外部闭源库在其清单库中设置了 maxSdkVersion=18
  3. 获得了一个没有最大 SDK 设置的有问题的库版本。
  4. 重新编译应用并成功上传到Play商店。

第 3 步的替代方法是覆盖我的 AndroidManifest.xml 主文件中的 maxSdkVersion,或者覆盖 gradle 中的 Disable Manifest Merger in Android Gradle Build,但 Android Studio 没有在这方面非常合作。

诚然,Play Store 上的错误消息相当含糊,可以用更好的措辞表达。