To protect ordinary users, Google is on a mission to ensure that developers update their apps. Since last year, the Play Store has started hiding old apps from users. This made it harder to find outdated apps, but users could still download Android apps outside of the Google Play store if they wanted to. However, starting with Android 14, the OS itself started blocking users from sideloading apps made for really old versions of Android.
Android 14 adds more restrictions on sideloading APKs
You may no longer be able to install apps that target outdated versions of Android
Specifically, Android 14 does not allow users to install apps that target an SDK version lower than 23, which corresponds to Android 6.0 Marshmallow released in 2015. Google specifically chose SDK version 23 as the threshold because malicious developers often built apps that deliberately targeted SDK version 22 or lower so they can bypass key security features introduced in newer versions of Android.
Notably, Android 6.0 is when the Android platform introduced its runtime permission model, which requires apps to explicitly obtain consent from users before they can be granted certain sensitive permissions. Before Android 6.0, malicious apps could get all the permissions they needed at installation time by taking advantage of the fact that most users don’t check the list of permissions an app requires before installing it.
Android itself has started to push the target version of the SDK
Google didn’t stop rolling out new privacy and security features after releasing Android 6.0, of course. Each new release of Android includes new behavioral changes that affect how apps work, which is why Google Play has been raising the target SDK version that developers must meet in order to submit apps over the years. Similarly, Android OS also seems to follow the annual rate of increase of Google Play SDK target version, as the upcoming release of Android 15 may set the new target SDK version threshold to 24.
While digging into the latest Android 15 Developer Preview 2 release, I noticed that the OS is now blocking me from installing apps built for SDK version 23, i.e. Android 6.0 Marshmallow. When I built an app targeting SDK version 23 and deployed it to a Google Pixel 7 Pro running the latest Android 14 QPR3 Beta 2 release, I was able to install it without any issues.
However, when I tried to load the same app on a Google Pixel 8 Pro running Android 15 DP2, I got the INSTALL_FAILED_DEPRECATED_SDK_VERSION error, which says “the app package must target at least SDK version 24.”
In contrast, the INSTALL_FAILED_DEPRECATED_SDK_VERSION error message in Android 14 states that app packages “must target at least SDK version 23”, confirming that the threshold has indeed been raised in the latest release.
It’s worth noting that when I tried to load an app I made onto my Pixel 8 Pro running Android 15 DP2, I was met with a Google Play Protect dialog telling me that the unsafe app was blocked. This dialog itself isn’t new, but I wanted to point out that tapping the “install anyway” button that appears after tapping “more details” does nothing.
However, it’s still possible to load apps built for SDK version 23/Android 6.0 if you’re running Android 15. All you need to do is install and use ADB to send the following command:
adb install --bypass-low-target-sdk-block FILENAME.apk
You’ll still get the Play Protect warning, but this time it’ll tap “install anyway”.