Android mendukung beberapa pengguna di satu perangkat. Untuk mempelajari lebih lanjut, lihat Mendukung Beberapa Pengguna. Karena tidak semua paket sistem berguna pada semua jenis pengguna Android, Anda dapat menggunakan daftar yang diizinkan untuk menentukan paket sistem mana yang harus diinstal sebelumnya pada setiap jenis pengguna. Dengan tidak melakukan pra-penginstalan paket sistem yang tidak perlu, Anda dapat mengoptimalkan waktu pembuatan, waktu mulai, dan penggunaan memori pengguna.
Menggunakan file XML konfigurasi sistem, yang dimodelkan
frameworks/base/data/etc/preinstalled-packages-platform.xml
,
untuk mendeklarasikan paket sistem mana yang harus diinstal lebih dulu untuk pengguna baru
berdasarkan jenis pengguna mereka. Idealnya, semua paket sistem di perangkat harus memiliki
entri dalam file XML (di-key dengan nama manifesnya), kecuali untuk overlay statis,
yang diperlakukan secara otomatis sesuai dengan entri untuk
paket target overlay yang sesuai.
Cara perangkat
harus menangani paket sistem yang tidak tercantum di sini dikontrol oleh
mode konfigurasi.
Jenis pengguna
Jenis pengguna dasar (setiap pengguna setidaknya memiliki salah satu dari jenis ini) adalah:
Jenis pengguna | Deskripsi |
---|---|
SYSTEM |
Pengguna 0. |
FULL |
Semua pengguna manusia nonprofil. |
PROFILE |
Pengguna manusia profil. |
Makna yang tepat dari
masing-masing didefinisikan dalam
frameworks/base/core/java/android/content/pm/UserInfo.java
.
Kontrol yang lebih terperinci dapat diperoleh dengan menentukan jenis pengguna individual karena
setiap pengguna adalah salah satu dari jenis pengguna ini, yang mencakup jenis pengguna AOSP
yang ditentukan di frameworks/base/core/java/android/os/UserManager.java
dan jenis pengguna kustom OEM apa pun yang ditentukan di
frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
Lihat halaman jenis pengguna untuk informasi
selengkapnya.
Saat ini, jenis pengguna AOSP mencakup:
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
Contoh
Contoh berikut membahas kasus penggunaan yang paling umum:
- Agar paket sistem diinstal sebelumnya hanya di pengguna 0:
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM" /> </install-in-user-type>
- Agar paket sistem diprainstal pada semua pengguna manusia (seperti {i>browser<i} web),
yaitu, untuk diinstal pada semua pengguna jenis
FULL
atauPROFILE
, yang menangani semua pengguna manusia:<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- Untuk paket sistem yang sudah diinstal sebelumnya pada semua pengguna manusia kecuali pengguna profil.
Misalnya, ini dapat diterapkan ke aplikasi wallpaper:
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> </install-in-user-type>
- Beberapa paket sistem benar-benar diperlukan untuk semua pengguna, terlepas dari
jenisnya. Dalam kasus ini, gunakan:
<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>
- Opsi yang lebih terperinci juga tersedia dengan menentukan
jenis datanya. Misalnya, kode contoh berikut menginstal paket ini pada setiap pengguna
yang jenis penggunanya adalah profil terkelola atau tamu atau
SYSTEM
jenis dasar.<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>
tag do-not-install-in
Paket juga dapat dicegah agar tidak diprainstal pada jenis pengguna tertentu
menggunakan tag do-not-install-in
. Perhatikan bahwa do-not-install-in
tag akan menggantikan tag install-in
dalam file apa pun. Contoh:
<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>
android.os.usertype.full.GUEST
(subjenis dari FULL),
paket ini tidak diinstal karena do-not-install-in
lebih diprioritaskan daripada install-in
.
Mengontrol perilaku dengan config.xml
Nilai resource konfigurasi config_userTypePackageWhitelistMode
mengontrol fitur ini dan menentukan cara perangkat menafsirkan paket sistem
yang tidak memiliki entri untuk
tipe pengguna apa pun. Untuk informasi selengkapnya, lihat
frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode
.
Di frameworks/base/core/res/res/values/config.xml
, tetapkan bilangan bulat
yang bernama config_userTypePackageWhitelistMode
ke kombinasi
nilai berikut. Tanda ini dapat digabungkan. Flag yang paling penting adalah:
Nilai | Deskripsi |
---|---|
0 (0b0000) |
Nonaktifkan. Menginstal semua paket sistem. |
1 (0b0001) |
Terapkan. Hanya menginstal paket sistem jika diizinkan. |
4 (0b0100) |
Perlakukan paket apa pun yang tidak disebutkan dalam file daftar yang diizinkan sebagai diizinkan secara implisit. |
8 (0b1000) |
Anggap paket apa pun yang tidak disebutkan dalam file daftar yang diizinkan sebagai diizinkan secara implisit hanya untuk pengguna SYSTEM. |
Konfigurasi berikut mengaktifkan fitur (sehingga tag install-in
dan
do-not-install-in
dipatuhi), tetapi memperlakukan paket sistem
yang tidak disebutkan seolah-olah paket tersebut adalah install-in
untuk semua pengguna:
<integer name="config_userTypePackageWhitelistMode">5</integer>