Contents

Docs

General
Provisioning
Work profile
Fully managed
App management
FAQ

Change log

Share this page

Android minimum target SDK matrix

Google has progressively introduced and tightened requirements around the targetSdkVersion apps must declare in order to be installed on devices and distributed through Google Play. These requirements exist as two distinct mechanisms: an on-device installation block enforced by Android itself, and Google Play's submission requirements that control app visibility and distribution. Together, they push the ecosystem towards modern, secure API levels.

On-device minimum targetSdkVersion

#

Starting with Android 14, Google introduced an OS-level enforcement that outright prevents the installation of applications targeting very old API levels. When an app fails this check, Android throws an INSTALL_FAILED_DEPRECATED_SDK_VERSION security exception, and the installation is blocked regardless of the source - whether sideloaded, pushed via an EMM, or installed from a store.

The only bypass available is through ADB:

adb install --bypass-low-target-sdk-block name_of_package.apk

This on-device block has incremented as follows:

Android version API level Minimum targetSdkVersion to install Equivalent Android version
Android 14 34 23 Android 6.0 (Marshmallow)
Android 15 35 24 Android 7.0 (Nougat)
Android 16 36 24 (unchanged) Android 7.0 (Nougat)
Android 17 37 24 (unchanged) Android 7.0 (Nougat)
Head's up

Android 17, like 16 a year before it, has maintained the minimum at API 24. For a security policy introduced as a moving target, this is beginning to look more like a quiet dismissal of the requirement, perhaps conceding to its unpopularity within the community.

Apps already installed on a device before an OS upgrade are not affected; the block only applies to new installations.

For further details on the on-device block, see:

Google Play targetSdkVersion requirements

#

Separately from the on-device block, Google Play enforces its own targetSdkVersion requirements for app submission and visibility. These requirements have been in place since 2018 and follow an annual cadence, typically requiring developers to target an API level within one version of the latest Android release.

There are two aspects to Google Play's enforcement:

  1. Submission requirements - New apps and updates must target a minimum API level to be submitted to Google Play.
  2. Visibility requirements - Existing apps that aren't updated will eventually become undiscoverable to users on newer Android versions, though users who previously installed the app can still find and reinstall it.
Year New apps & updates must target Existing apps minimum to remain visible Key dates
2018 API 26 - Android 8.0 (Oreo) N/A August 2018 (new), November 2018 (updates)
2019 API 28 - Android 9 (Pie) N/A August 2019 (new), November 2019 (updates)
2020 API 29 - Android 10 N/A August 2020 (new), November 2020 (updates)
2021 API 30 - Android 11 N/A August 2021 (new), November 2021 (updates)
2022 API 31 - Android 12 API 30 - Android 11 (from January 2023) August 2022 (new), November 2022 (updates)
2023 API 33 - Android 13 API 31 - Android 12 August 31, 2023
2024 API 34 - Android 14 API 33 - Android 13 August 31, 2024
2025 API 35 - Android 15 API 34 - Android 14 August 31, 2025
2026 API 36 - Android 16 API 35 - Android 15 August 31, 2026
Note

The 2026 submission requirements differ by device category: Wear OS and Android Automotive OS apps must target at least API 35; Android TV and Android XR apps must target at least API 34. Existing-app visibility thresholds also differ by category, so check Google Play's current policy for those details. Developers can request an extension to November 1, 2026.

Permanently private apps restricted to users in a specific organisation for internal distribution are exempt from Google Play's target API level requirements.

Why this matters for enterprise

#

For organisations managing devices through an EMM, both mechanisms are relevant:

  • On-device block: If a managed device is running Android 14 or later, any enterprise app targeting below the minimum API level will fail to install, whether pushed silently via the EMM or installed manually. This is particularly important for legacy line-of-business apps that may not have been updated in some time.
  • Google Play requirements: Public apps distributed through managed Google Play must meet the submission requirements to be updated, and can lose visibility to new users on newer Android versions if left unmaintained. Permanently private apps restricted to one organisation are exempt from this policy.

For Android 14-17 devices, enterprise apps need to target at least API level 24 (Android 7.0) to clear the on-device installation block on the builds covered above. For public apps on Google Play, new submissions and updates now need API 36, while existing apps need API 35 to remain visible to new users on newer devices.

Test APKs

#

To validate the on-device minimum targetSdkVersion behaviour, the following demo APKs are available for sideloading. Each targets a specific API level and can be used to confirm which apps will and won't install on a given Android version:

APK targetSdkVersion Android version
bayton-sdk-demo-target37-android17.apk 37 Android 17
bayton-sdk-demo-target36-android16.apk 36 Android 16
bayton-sdk-demo-target35-android15.apk 35 Android 15
bayton-sdk-demo-target34-android14.apk 34 Android 14
bayton-sdk-demo-target33-android13.apk 33 Android 13
bayton-sdk-demo-target32-android12L.apk 32 Android 12L
bayton-sdk-demo-target31-android12.apk 31 Android 12
bayton-sdk-demo-target30-android11.apk 30 Android 11
bayton-sdk-demo-target29-android10.apk 29 Android 10
bayton-sdk-demo-target28-android9.apk 28 Android 9 (Pie)
bayton-sdk-demo-target27-android8.1.apk 27 Android 8.1 (Oreo)
bayton-sdk-demo-target26-android8.0.apk 26 Android 8.0 (Oreo)
bayton-sdk-demo-target25-android7.1.apk 25 Android 7.1 (Nougat)
bayton-sdk-demo-target24-android7.0.apk 24 Android 7.0 (Nougat)
bayton-sdk-demo-target23-android6.0.apk 23 Android 6.0 (Marshmallow)
bayton-sdk-demo-target22-android5.1.apk 22 Android 5.1 (Lollipop)
bayton-sdk-demo-target21-android5.0.apk 21 Android 5.0 (Lollipop)

To test, push an APK via ADB:

adb install bayton-sdk-demo-target22-android5.1.apk

On Android 14+ this will fail for APKs below the minimum targetSdkVersion with INSTALL_FAILED_DEPRECATED_SDK_VERSION. To bypass the block for testing purposes:

adb install --bypass-low-target-sdk-block bayton-sdk-demo-target22-android5.1.apk

The above applications have never been on Google Play and will likely trigger a Play Protect warning, you can bypass this when it pops up, otherwise you will receive a INSTALL_FAILED_VERIFICATION_FAILURE error. This is separate to the target SDK warnings.

The source code for these applications can be found on GitHub.

Read more

#
mail Reply by email | edit_note Edit this page | code_blocks Code

Docs

General
Provisioning
Work profile
Fully managed
App management
FAQ
Ask MIKA
MIKA Mobile Intelligence & Knowledge Assistant