TargetSdkVersion 是 28 但最高 api 级别是 26

TargetSdkVersion is 28 but highest api level is 26

我正在尝试将我的应用程序从 Nougat API 级别 26 更新到 Android Pie,API 级别 28。我将我的 targetSdkVersion 设置为 28,并将 compileSdkVersion 设置为 28。我还将我所有的支持库版本更新为最新版本(也是 28)。这是我的应用程序的 gradle 构建文件:

构建工作正常,我已经在 API 级别 28 虚拟设备、Nexus 5X API 28 和 Pixel 2 XL API 28 上对其进行了测试。

但是,当我将它上传到 Google Play 控制台时,它显示如下:

我知道这意味着兼容的设备不会有任何变化(因为之前的版本也达到了 API 26 级)。

我试过在线搜索,但找不到答案。大多数搜索结果告诉你更新你的 targetSdkVersion,支持库版本和 compileSdkVersion 到 28,我已经完成了。另一半是关于minSdkVersion和targetSdkVersion的区别

我做错了什么?

首先,你不必把buildTools放在AndroidP上,这个不是必须的。 其次,请确保您的 Android Studio 上的 SDK 是最新的。 并查看 Google 提供的迁移指南: https://developer.android.com/about/versions/pie/android-9.0-migration

@MorrisonChang 链接后 https://developer.android.com/training/basics/supporting-devices/platforms 我又检查了一遍,发现有一部分讨论了 Android Manifest。

The AndroidManifest.xml file describes details about your app and identifies which versions of Android it supports. Specifically, the minSdkVersion and targetSdkVersion attributes for the element identify the lowest API level with which your app is compatible and the highest API level against which you’ve designed and tested your app.

我认为 gradle 构建文件将覆盖任何与 SDK 版本相关的元素,因为 here。但我仍然重新查看了我的 Android 清单。

显然,我的 Android 清单中有一行:

<uses-sdk android:maxSdkVersion="26"/>

这设置了我的最高 API 级别。增加到 28 后,它起作用了。