You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
5.0 KiB
114 lines
5.0 KiB
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- Copyright (C) 2019 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<!--
|
|
This XML file declares which system packages should be initially installed for new users based on
|
|
their user type. All system packages on the device should ideally have an entry in an xml file
|
|
(keyed by its manifest name), except for static overlays which are instead treated automatically
|
|
according to the entry for their corresponding overlay target package.
|
|
|
|
Base user-types (every user will be at least one of these types) are:
|
|
SYSTEM (user 0)
|
|
FULL (any non-profile human user)
|
|
PROFILE (profile human user)
|
|
the precise meaning of which is defined in
|
|
frameworks/base/core/java/android/content/pm/UserInfo.java.
|
|
TODO(b/143784345): When UserInfo flags are categorized, reference the "base type" category here.
|
|
|
|
More granular control is also available by specifying individual user types (every user is exactly
|
|
one of these user types).
|
|
This includes AOSP user types defined in frameworks/base/core/java/android/os/UserManager.java, like
|
|
android.os.usertype.full.SYSTEM
|
|
android.os.usertype.full.SECONDARY
|
|
android.os.usertype.full.GUEST
|
|
android.os.usertype.full.DEMO
|
|
android.os.usertype.full.RESTRICTED
|
|
android.os.usertype.profile.MANAGED
|
|
android.os.usertype.system.HEADLESS
|
|
as well as any OEM custom user types defined using
|
|
frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
|
|
Any specified user types must be valid user types on the device (i.e. created in UserTypeFactory).
|
|
|
|
The following three examples should cover most normal cases:
|
|
|
|
1. For a system package to be pre-installed only in user 0:
|
|
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="SYSTEM" />
|
|
</install-in-user-type>
|
|
|
|
|
|
2. For a system package to be pre-installed on all human users (e.g. a web browser), i.e. to be
|
|
installed on any user of type FULL or PROFILE (since this covers all human users):
|
|
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="FULL" />
|
|
<install-in user-type="PROFILE" />
|
|
</install-in-user-type>
|
|
|
|
|
|
3. For a system package to be pre-installed on all human users except for profile users (e.g. a
|
|
wallpaper app, since profiles cannot display wallpaper):
|
|
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="FULL" />
|
|
</install-in-user-type>
|
|
|
|
|
|
Some system packages truly are required to be on all users, regardless of type, in which case use:
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="SYSTEM">
|
|
<install-in user-type="FULL" />
|
|
<install-in user-type="PROFILE" />
|
|
</install-in-user-type>
|
|
|
|
More fine-grained options are also available by specifying individual user types.
|
|
E.g.
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="android.os.usertype.profile.MANAGED" />
|
|
<install-in user-type="android.os.usertype.full.GUEST" />
|
|
<install-in user-type="SYSTEM">
|
|
</install-in-user-type>
|
|
which installs this package on any user whose user type is a managed profile or a guest, or is of
|
|
a SYSTEM base type.
|
|
|
|
Additionally, packages can blacklist user types. Blacklists override any whitelisting (in any file).
|
|
E.g.
|
|
<install-in-user-type package="com.android.example">
|
|
<install-in user-type="FULL" />
|
|
<do-not-install-in user-type="android.os.usertype.full.GUEST" />
|
|
</install-in-user-type>
|
|
If a user is of type android.os.usertype.full.GUEST (which itself is a subtype of FULL), this
|
|
package will NOT be installed, because the 'do-not-install-in' takes precedence over 'install-in'.
|
|
|
|
The way that a device treats system packages that do not have any entry (for any user type) at all
|
|
is determined by the config resource value config_userTypePackageWhitelistMode.
|
|
See frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode.
|
|
|
|
Changes to the whitelist during system updates can result in installing additional system packages
|
|
to pre-existing users, but cannot uninstall pre-existing system packages from pre-existing users.
|
|
-->
|
|
<config>
|
|
<install-in-user-type package="com.android.providers.settings">
|
|
<install-in user-type="SYSTEM" />
|
|
<install-in user-type="FULL" />
|
|
<install-in user-type="PROFILE" />
|
|
</install-in-user-type>
|
|
<install-in-user-type package="com.android.wallpaperbackup">
|
|
<install-in user-type="FULL" />
|
|
</install-in-user-type>
|
|
</config>
|