| The policy defines multiple types and attributes for apps. This document is a |
| high-level overview of these. For further details on each type, refer to their |
| specific files in the public/ and private/ directories. |
| |
| ## appdomain |
| In general, all apps will have the `appdomain` attribute. You can think of |
| `appdomain` as any app started by Zygote. The macro `app_domain()` should be |
| used to define a type that is considered an app (see public/te_macros). |
| |
| ## untrusted_app |
| Third-party apps (for example, installed from the Play Store), targeting the |
| most recent SDK version will be typed as `untrusted_app`. This is the default |
| domain for apps, unless a more specific criteria applies. |
| |
| When an app is targeting a previous SDK version, it may have the |
| `untrusted_app_xx` type where xx is the targetSdkVersion. For instance, an app |
| with `targetSdkVersion = 32` in its manifest will be typed as `untrusted_app_32`. |
| Not all targetSdkVersion have a specific type, some version are skipped when no |
| differences were introduced (see public/untrusted_app.te for more details). |
| |
| The `untrusted_app_all` attribute can be used to reference all the types |
| described in this section (that is, `untrusted_app`, `untrusted_app_30`, |
| `untrusted_app_32`, etc.). |
| |
| ## isolated_app |
| Apps may be restricted when using isolatedProcess=true in their manifest. In |
| this case, they will be assigned the `isolated_app` type. A similar type |
| `isolated_compute_app` exist for some restricted services. |
| |
| Both types `isolated_app` and `isolated_compute_app` are grouped under the |
| attribute `isolated_app_all`. |
| |
| ## ephemeral_app |
| Apps that are run without installation. These are apps deployed for example via |
| Google Play Instant. These are more constrained than `untrusted_app`. |
| |
| ## sdk_sandbox |
| SDK runtime apps, installed as part of the Privacy Sandbox project. These are |
| sandboxed to limit their communication channels. |
| |
| ## platform_app |
| Apps that are signed with the platform key. These are installed within the |
| system or vendor image. com.android.systemui is an example of an app running |
| with this type. |
| |
| ## system_app |
| Apps pre-installed on a device, signed by the platform key and running with the |
| system UID. com.android.settings is an example of an app running with this |
| type. |
| |
| ## priv_app |
| Apps shipped as part of the device and installed in one of the |
| `/{system,vendor,product}/priv-app` directories. |
| com.google.android.apps.messaging is an example of an app running as priv_app. |
| Permissions for these apps need to be explicitly granted, see |
| https://source.android.com/docs/core/permissions/perms-allowlist for more |
| details. |