Android, tek bir cihazda birden fazla kullanıcı olmasını destekler. Daha fazla bilgi için Birden fazla kullanıcıyı destekleme başlıklı makaleyi inceleyin. Tüm sistem paketleri her tür Android kullanıcısı için yararlı olmadığından, her kullanıcı türüne hangi sistem paketlerinin önceden yüklenmesi gerektiğini belirtmek için izin verilenler listesini kullanabilirsiniz. Gereksiz sistem paketlerini önceden yüklemeyerek kullanıcı oluşturma sürelerini, başlangıç sürelerini ve bellek kullanımını optimize edebilirsiniz.
Yeni kullanıcılar için kullanıcı türlerine göre hangi sistem paketlerinin ilk olarak yüklenmesi gerektiğini belirtmek üzere frameworks/base/data/etc/preinstalled-packages-platform.xml
modelinde oluşturulmuş sistem yapılandırma XML dosyalarını kullanın. Cihazdaki tüm sistem paketlerinin ideal olarak bir XML dosyasında girişi olmalıdır (manifest adına göre anahtarlanır). Bunun yerine, statik yer paylaşımları, ilgili yer paylaşımı hedef paketinin girişine göre otomatik olarak işlenir.
Cihazın burada listelenmeyen sistem paketlerini işleme şekli yapılandırma modu tarafından kontrol edilir.
Kullanıcı türleri
Temel kullanıcı türleri (her kullanıcı bu türlerden en az birine sahiptir) şunlardır:
Kullanıcı türü | Açıklama |
---|---|
SYSTEM |
0. Kullanıcı |
FULL |
Profil olmayan gerçek kullanıcılar. |
PROFILE |
Gerçek bir kullanıcının profili. |
Her birinin tam anlamı frameworks/base/core/java/android/content/pm/UserInfo.java
adresinde tanımlanmıştır.
Her kullanıcı tam olarak bu kullanıcı türlerinden biri olduğundan (frameworks/base/core/java/android/os/UserManager.java
bölümünde tanımlanan AOSP kullanıcı türleri ve frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
bölümünde tanımlanan tüm OEM özel kullanıcı türleri dahil) kullanıcı türlerini tek tek belirterek daha ayrıntılı kontrol elde edilebilir. Daha fazla bilgi için kullanıcı türleri sayfasına bakın.
AOSP kullanıcı türleri şu anda şunlardır:
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
Örnekler
Aşağıdaki örneklerde en yaygın kullanım alanları ele alınmıştır:
- Bir sistem paketinin yalnızca 0 numaralı kullanıcıya önceden yüklenmesi için:
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM" /> </install-in-user-type>
- Bir sistem paketinin tüm gerçek kullanıcılara (ör. web tarayıcısı) önceden yüklenmesi, yani tüm gerçek kullanıcıları hedefleyen
FULL
veyaPROFILE
türündeki herhangi bir kullanıcıya yüklenmesi için:<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- Bir sistem paketinin, profil kullanıcıları hariç tüm gerçek kullanıcılara önceden yüklenmesi için.
Örneğin, bu bir duvar kağıdı uygulamasına uygulanabilir:
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> </install-in-user-type>
- Bazı sistem paketlerinin, türden bağımsız olarak tüm kullanıcılarda bulunması gerçekten gereklidir. Bu durumlarda şunları kullanın:
<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>
- Ayrı kullanıcı türleri belirterek daha ayrıntılı seçeneklerden de yararlanabilirsiniz. Örneğin, aşağıdaki örnek kod bu paketi kullanıcı türü yönetilen profil veya misafir olan ya da
SYSTEM
temel türüne sahip olan tüm kullanıcılara yükler.<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>
do-not-install-in etiketi
do-not-install-in
etiketi kullanılarak paketlerin belirli kullanıcı türlerine önceden yüklenmesi de engellenebilir. do-not-install-in
etiketlerinin, herhangi bir dosyada install-in
etiketlerinin geçersiz kılacağını unutmayın. Örnek:
<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
türüne (FULL alt türü) sahipse do-not-install-in
etiketi install-in
'ten öncelikli olduğundan bu paket yüklenmez.
Davranışı config.xml ile kontrol etme
config_userTypePackageWhitelistMode
yapılandırma kaynağı değeri bu özelliği kontrol eder ve cihazın, herhangi bir kullanıcı türü için girişi olmayan sistem paketlerini nasıl yorumlayacağını belirler. Daha fazla bilgi için frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode
başlıklı makaleyi inceleyin.
frameworks/base/core/res/res/values/config.xml
içinde, config_userTypePackageWhitelistMode
adlı tam sayıyı aşağıdaki değerlerin bir kombinasyonuna ayarlayın. Bu işaretler birleştirilebilir. En önemli işaretler şunlardır:
Değer | Açıklama |
---|---|
0 (0b0000) |
Devre dışı bırakın. Tüm sistem paketlerini yükleyin. |
1 (0b0001) |
Zorunlu kıl'ı tıklayın. Sistem paketlerini yalnızca izin verilenler listesine eklendiklerinde yükleyin. |
4 (0b0100) |
İzin verilenler listesi dosyasında belirtilmeyen tüm paketler, izin verilenler listesine dahil edilmiş olarak kabul edilir. |
8 (0b1000) |
İzin verilenler listesi dosyasında belirtilmeyen tüm paketler, yalnızca SİSTEM kullanıcısı için dolaylı olarak izin verilenler listesinde kabul edilir. |
Aşağıdaki yapılandırma, özelliği etkinleştirir (install-in
ve do-not-install-in
etiketlerine uyulması için) ancak bahsedilmeyen tüm sistem paketlerini tüm kullanıcılar için install-in
olarak değerlendirir:
<integer name="config_userTypePackageWhitelistMode">5</integer>