The next release of GrapheneOS will raise the minimum supported API level from 23 (Android 6) to 28 (Android 9):
github.com/GrapheneOS/pla
Users will be warned when trying to run apps targeting API < 28. This is important due to backwards compatible privacy/security improvements.
Conversation
This matches the minimum API level required by the Play Store for both new apps and app updates, so this isn't an aggressive requirement. A significant example of these privacy/security improvements is API 28+ using a per-app-per-profile SELinux MLS level instead of per-profile.
1
4
That means apps targeting API 28+ each run in a unique security domain and cannot directly communicate or share data with each other. They can only do it via intents. Apps can no longer do things like making their files world-readable/world-writable to give other apps access.
Replying to
Most of the privacy and security improvements in major releases of AOSP are applied globally. Some of these changes break compatibility and need to be limited to newer API levels. Easy to see how preventing direct sharing/communication between apps was a break in compatibility.
1
3
As another example, the GET_ACCOUNTS permission (part of the Contacts group) used to provide access to all the accounts in the profile. For API 26+ (Android 8), it doesn't do that anymore, case-by-case consent is needed via the user choosing an account:
1
1
That's similar to the official deprecation of the Storage permissions in Android 10 to force finer-grained requests including case-by-case consent via users choosing a file/directory via the system file manager (Storage Access Framework) including support for app-based providers.
1
1
Unfortunately, the Storage deprecation isn't actually mandatory for API level 29 (Android 10) due to backlash, but it will be for API level 30 (Android 11):
developer.android.com/preview/privac
Android 10 originally used emulation of top-level shared storage to force this on every app.
1
6
There was too much backlash from developers and the media / users ended up amplifying that, so enforcing it was delayed by a year until Android 11 and they aren't going to force it on legacy apps yet. GrapheneOS could enable it for everything, but it would be a usability issue.
7
