58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
|
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.
|