Target API Level policy
App Quality: Target API Level Does Not Meet Requirements
Our Take
Your app targets an Android API level below Google Play's current minimum requirement. As of 2025, new apps must target at least API level 34 (Android 14), and app updates must also target API level 34 or higher. Apps targeting outdated API levels are blocked from being published or updated on Google Play.
Resolution Guide
**Update build.gradle** — Set `targetSdkVersion` to the required level (currently 34):
```gradle
android {
defaultConfig {
targetSdkVersion 34
}
}
```
Also update `compileSdkVersion` to match or exceed the target.
**Review behavior changes** — Each API level introduces behavior changes. Check the official migration guides:
- API 33: POST_NOTIFICATIONS permission, granular media permissions
- API 34: Foreground service types required, restrictions on implicit intents
**Update third-party SDKs** — Check all dependencies for API level compatibility. Update to latest versions. If an SDK doesn't support the target API level, find an alternative or contact the maintainer.
**Handle new permissions** — API 33+ requires POST_NOTIFICATIONS runtime permission. API 34 requires declaring foreground service types in the manifest:
```xml
<service android:name=".MyService"
android:foregroundServiceType="location|camera" />
```
**Test on target API emulator** — Create an emulator with the target API level. Test all features, especially background work, notifications, file access, and location.
**Check for deprecated API usage** — Use Android Lint (`./gradlew lint`) to find deprecated API calls. Replace them with recommended alternatives.
**Verify Gradle consistency** — Ensure `targetSdkVersion` isn't overridden in product flavors or build types. Check both `build.gradle` and `build.gradle.kts` if migrating.
Example Rejection Email
Before & After
build.gradle has targetSdkVersion 31 with compileSdkVersion 31, uses deprecated JobIntentService, and relies on an old AdMob SDK version that doesn't support API 34
build.gradle updated to targetSdkVersion 34, compileSdkVersion 34, JobIntentService replaced with WorkManager, AdMob SDK updated to latest version, POST_NOTIFICATIONS permission added with runtime request
What changed: Updating targetSdkVersion is not just changing a number — you must handle all behavior changes, update dependencies, and test thoroughly on the target API level
Community Solutions · 0
Sign in to share your solution.