blob: 421bc25d60e93c16cdc3fb60f3fd3d9909b1b371 [file] [log] [blame]
Bookatz04d7ae52019-08-05 14:07:12 -07001<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2019 The Android Open Source Project
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15-->
16
17<!--
18This XML file declares which system packages should be initially installed for new users based on
Bookatza8c2d2a2019-11-13 10:10:18 -080019their user type. All system packages on the device should ideally have an entry in an xml file
Adam Bookatz1f040602021-01-14 13:50:29 -080020(keyed by its manifest name), except for static overlays which are instead treated automatically
21according to the entry for their corresponding overlay target package.
Bookatz04d7ae52019-08-05 14:07:12 -070022
Bookatza8c2d2a2019-11-13 10:10:18 -080023Base user-types (every user will be at least one of these types) are:
Bookatz04d7ae52019-08-05 14:07:12 -070024 SYSTEM (user 0)
25 FULL (any non-profile human user)
26 PROFILE (profile human user)
Bookatza8c2d2a2019-11-13 10:10:18 -080027the precise meaning of which is defined in
Bookatz04d7ae52019-08-05 14:07:12 -070028frameworks/base/core/java/android/content/pm/UserInfo.java.
Bookatza8c2d2a2019-11-13 10:10:18 -080029TODO(b/143784345): When UserInfo flags are categorized, reference the "base type" category here.
30
31More granular control is also available by specifying individual user types (every user is exactly
32one of these user types).
33This includes AOSP user types defined in frameworks/base/core/java/android/os/UserManager.java, like
34 android.os.usertype.full.SYSTEM
35 android.os.usertype.full.SECONDARY
36 android.os.usertype.full.GUEST
37 android.os.usertype.full.DEMO
38 android.os.usertype.full.RESTRICTED
39 android.os.usertype.profile.MANAGED
40 android.os.usertype.system.HEADLESS
41as well as any OEM custom user types defined using
42frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
43Any specified user types must be valid user types on the device (i.e. created in UserTypeFactory).
Bookatz04d7ae52019-08-05 14:07:12 -070044
45The following three examples should cover most normal cases:
46
471. For a system package to be pre-installed only in user 0:
48
49 <install-in-user-type package="com.android.example">
Bookatz52c74082019-12-03 09:31:05 -080050 <install-in user-type="SYSTEM" />
Bookatz04d7ae52019-08-05 14:07:12 -070051 </install-in-user-type>
52
53
542. For a system package to be pre-installed on all human users (e.g. a web browser), i.e. to be
Yan Zhu31b01e42020-05-18 12:19:08 -070055installed on any user of type FULL or PROFILE (since this covers all human users):
Bookatz04d7ae52019-08-05 14:07:12 -070056
57 <install-in-user-type package="com.android.example">
Bookatz52c74082019-12-03 09:31:05 -080058 <install-in user-type="FULL" />
59 <install-in user-type="PROFILE" />
Bookatz04d7ae52019-08-05 14:07:12 -070060 </install-in-user-type>
61
62
633. For a system package to be pre-installed on all human users except for profile users (e.g. a
64wallpaper app, since profiles cannot display wallpaper):
65
66 <install-in-user-type package="com.android.example">
Bookatz52c74082019-12-03 09:31:05 -080067 <install-in user-type="FULL" />
Bookatz04d7ae52019-08-05 14:07:12 -070068 </install-in-user-type>
69
70
71Some system packages truly are required to be on all users, regardless of type, in which case use:
72 <install-in-user-type package="com.android.example">
73 <install-in user-type="SYSTEM">
Bookatz52c74082019-12-03 09:31:05 -080074 <install-in user-type="FULL" />
75 <install-in user-type="PROFILE" />
Bookatz04d7ae52019-08-05 14:07:12 -070076 </install-in-user-type>
77
Bookatza8c2d2a2019-11-13 10:10:18 -080078More fine-grained options are also available by specifying individual user types.
79E.g.
80 <install-in-user-type package="com.android.example">
Bookatz52c74082019-12-03 09:31:05 -080081 <install-in user-type="android.os.usertype.profile.MANAGED" />
82 <install-in user-type="android.os.usertype.full.GUEST" />
Bookatza8c2d2a2019-11-13 10:10:18 -080083 <install-in user-type="SYSTEM">
84 </install-in-user-type>
85which installs this package on any user whose user type is a managed profile or a guest, or is of
86a SYSTEM base type.
87
88Additionally, packages can blacklist user types. Blacklists override any whitelisting (in any file).
Bookatz04d7ae52019-08-05 14:07:12 -070089E.g.
90 <install-in-user-type package="com.android.example">
91 <install-in user-type="FULL" />
Bookatza8c2d2a2019-11-13 10:10:18 -080092 <do-not-install-in user-type="android.os.usertype.full.GUEST" />
Bookatz04d7ae52019-08-05 14:07:12 -070093 </install-in-user-type>
Bookatza8c2d2a2019-11-13 10:10:18 -080094If a user is of type android.os.usertype.full.GUEST (which itself is a subtype of FULL), this
95package will NOT be installed, because the 'do-not-install-in' takes precedence over 'install-in'.
Bookatz04d7ae52019-08-05 14:07:12 -070096
97The way that a device treats system packages that do not have any entry (for any user type) at all
98is determined by the config resource value config_userTypePackageWhitelistMode.
99See frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode.
100
Adam Bookatz1efd27cd2020-03-19 18:37:36 -0700101Changes to the whitelist during system updates can result in installing additional system packages
102to pre-existing users, but cannot uninstall pre-existing system packages from pre-existing users.
Bookatz04d7ae52019-08-05 14:07:12 -0700103-->
104<config>
Cynthia Wasonga6cf76bc2022-12-19 02:10:18 +0000105 <!-- Bluetooth (com.android.btservices apex) - visible on the sharesheet -->
106 <install-in-user-type package="com.android.bluetooth">
107 <install-in user-type="SYSTEM" />
108 <install-in user-type="FULL" />
109 <install-in user-type="PROFILE" />
110 <do-not-install-in user-type="android.os.usertype.profile.CLONE" />
111 </install-in-user-type>
112
113 <!-- Settings (Settings app) -->
114 <install-in-user-type package="com.android.settings">
115 <install-in user-type="SYSTEM" />
116 <install-in user-type="FULL" />
117 <install-in user-type="PROFILE" />
118 </install-in-user-type>
119
120 <!-- Settings Storage (SettingsProvider) -->
Bookatz04d7ae52019-08-05 14:07:12 -0700121 <install-in-user-type package="com.android.providers.settings">
122 <install-in user-type="SYSTEM" />
123 <install-in user-type="FULL" />
124 <install-in user-type="PROFILE" />
125 </install-in-user-type>
Cynthia Wasonga6cf76bc2022-12-19 02:10:18 +0000126
127 <!-- WallpaperBackup (WallpaperBackup)-->
Bookatz6d31ac12019-12-10 12:50:22 -0800128 <install-in-user-type package="com.android.wallpaperbackup">
129 <install-in user-type="FULL" />
130 </install-in-user-type>
Bookatz04d7ae52019-08-05 14:07:12 -0700131</config>