It's usually in the best interests of a developer to update their apps to support the latest Android platform features. Each new Android versions offers new APIs and features that earlier versions of Android don't offer. However, each new Android version also adds new restrictions to what apps can do, which some application developers aren't a fan of. For example, many apps avoided bumping their target API level to Android Marshmallow or later so they could avoid having to implement runtime permissions. Google finally started to crack down on this behavior with new restrictions imposed on apps uploaded and updated to the Google Play Store, but they also added a warning in Android Pie to shame apps that still haven't updated past Android 4.1 Jelly Bean. According to a recent commit in the Android Open Source Project, it seems that Android Q will warn users if the app they're running targets Android 5.1 Lollipop or earlier.

Modernizing Android Apps

Last December, Google introduced a new policy to modernize Android apps on the Google Play Store. According to the new policy, all new applications submitted to the Google Play Store starting August 1, 2018, must target API level 26 or higher (that means Android 8.0 Oreo, Android 8.1 Oreo, or Android 9 Pie.) Furthermore, starting November 1, 2018, all updates to existing apps on the Play Store must also target API level 26 or higher. This policy will force most actively developed and new applications to abide by the new security, privacy, memory optimization, and battery saving features in the newest versions of Android. However, the policy won't mean that apps will stop working on devices running older versions of Android—developers are still allowed to set their own minimum API level. On the other hand, Google's latest version of Android, Android 9 Pie, further encourages app developers to update their apps by explicitly warning users when they're running an app that's so old it might not work properly.

According to this merged commit in AOSP, the "PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION" is being increased to 23. This build flag translates into the system property ro.build.version.min_supported_target_sdk. This property is used by the system when launching any app's activity. The system checks the target SDK level of the app, and if it's less than the value defined in ro.build.version.min_supported_target_sdk, then a warning message is shown to the user that the app might not work properly.

Android Q

For now, it doesn't look like Android Q will actually prevent users from running really old Android applications. We would imagine there would be a small, but rather vocal minority, of users who wouldn't be happy with such a restriction. There are many seldom-updated apps that are used in specialized fields for which there are no alternatives. Displaying this warning every time a user launches an old app in Android Q may get users to complain enough that the app is updated or replaced, though.

If you would like to see the target API level of the apps installed on your device, you can use the app linked below. On my device, there are 4 apps that I use regularly that would trigger this warning: Titanium Backup, AZ Screen Recorder, Brother iPrint & Scan, and Terminal Emulator.

Lastly, we should note that the commit message states the PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION flag is being "provisionally" increased. That means Google hasn't fully decided on whether to set the limit at SDK level 23 and could choose something higher or lower. If we spot any further changes to this flag in AOSP, we'll let you all know.