Android mendukung beberapa pengguna di satu perangkat. Untuk mempelajari lebih lanjut, lihat Mendukung Beberapa Pengguna. Karena tidak semua paket sistem berguna di semua jenis pengguna Android, Anda dapat menggunakan daftar yang diizinkan untuk menentukan paket sistem mana yang harus diprainstal di setiap jenis pengguna. Dengan tidak menginstal paket sistem yang tidak diperlukan sebelumnya, Anda dapat mengoptimalkan waktu pembuatan pengguna, waktu mulai, dan penggunaan memori.
Gunakan file XML konfigurasi sistem, yang dimodelkan pada
frameworks/base/data/etc/preinstalled-packages-platform.xml
,
untuk mendeklarasikan paket sistem mana yang harus diinstal pada awalnya 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
menangani paket sistem yang tidak tercantum di sini dikontrol oleh
mode konfigurasi.
Jenis pengguna
Jenis pengguna dasar (setiap pengguna setidaknya memiliki salah satu jenis ini) adalah:
Jenis pengguna | Deskripsi |
---|---|
SYSTEM |
Pengguna 0. |
FULL |
Semua pengguna manusia non-profil. |
PROFILE |
Pengguna manusia profil. |
Arti yang tepat dari setiap parameter ditentukan 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.profile.PRIVATE
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 diinstal sebelumnya di semua pengguna manusia (seperti browser web),
yaitu, diinstal di 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>
- Agar paket sistem diprainstal di 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 harus ada di 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 setiap jenis pengguna. Misalnya, kode contoh berikut menginstal paket ini pada pengguna
yang jenis penggunanya adalah profil terkelola atau tamu atau dari jenis dasar
SYSTEM
.<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 di jenis pengguna tertentu
menggunakan tag do-not-install-in
. Perhatikan bahwa tag do-not-install-in
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 FULL),
paket ini tidak diinstal karena tag do-not-install-in
lebih diutamakan 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 jenis 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. Flag 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) |
Perlakukan paket apa pun yang tidak disebutkan dalam file daftar yang diizinkan sebagai secara implisit diizinkan hanya untuk pengguna SISTEM. |
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>