The target API level error means your app's targetSdk is lower than what Google Play requires for new apps and updates. Raise targetSdk to the level Play Console names, rebuild, test, and upload the new bundle.
The message usually reads something like: "Your app currently targets API level 34 and must target at least API level 35 to ensure it is built on the latest APIs optimized for security and performance." The numbers in your message are the ones that matter, because the required level moves up over time.
Why the required level keeps changing
Google raises the minimum target API level for Google Play roughly once a year, usually with a deadline at the end of August, to the Android version released the year before. Existing apps that don't update stay on the store, but every new app and every update has to meet the current level.
Wear OS, Android TV and Android Automotive apps have their own, sometimes lower, requirements. Google has also allowed extensions on request in past years. Check the Policy status or the warning in Play Console for your app rather than relying on a date from a blog post, including this one.
Native Android: change targetSdk in Gradle
Open app/build.gradle or build.gradle.kts and find the android block. Set targetSdk to the required level, and set compileSdk to the same level or higher. Older projects call them targetSdkVersion and compileSdkVersion.
Install the matching Android SDK Platform in Android Studio's SDK Manager. If Gradle complains that the plugin doesn't support that compileSdk, update the Android Gradle Plugin and Gradle to a version that does.
Libraries count too. If an old dependency doesn't build with the new compileSdk, update it before blaming your own code.
Flutter, React Native, Expo and Unity
Flutter: android/app/build.gradle usually sets targetSdk to flutter.targetSdkVersion, which comes from your Flutter version. Upgrading Flutter to a current stable release is the cleanest fix. You can also replace it with the number directly.
React Native: the levels live in android/build.gradle, in the ext block as targetSdkVersion and compileSdkVersion. Newer React Native releases ship with newer defaults, so upgrading the framework often fixes this along with other build issues.
Expo: the target level comes from your Expo SDK version. Upgrade to a current SDK, or set the level with the expo-build-properties config plugin, then build again.
Unity: open Player Settings, Other Settings, and set Target API Level to the required level or to Automatic (highest installed). Make sure the Android SDK that Unity uses actually has that platform installed.
Test before you upload
Raising targetSdk turns on the behaviour changes of that Android version for your app. Recent versions, for example, draw apps edge to edge by default, so content can end up under the status bar or navigation bar. Permissions, background work and notifications have also changed between versions.
Run the app on an emulator or phone with the new Android version and go through the main screens. Then raise the version code, build a release bundle and upload it.
If Play Console still shows the warning after that, check your other tracks. An old release that is still active on internal, closed or open testing can keep the warning there until you replace it with the new build.
During a closed test
If this error appears in the middle of your 14-day closed test, fix it and upload the new build to the same track. Opted-in testers get the update, and what counts for the requirement is that 12 or more of them stay opted in every day.
If you still need those 12, PeerPlay is a free way to find them: Android developers test each other's apps every day through your real closed track, on real phones running different Android versions.
