Önceden yüklenmiş sistem paketleri

Android, tek bir cihazda birden fazla kullanıcı olmasını destekler. Daha fazla bilgi edinmek 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ıç zamanlarını ve bellek kullanımını optimize edebilir.

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ırması XML dosyalarını kullanın. Cihazdaki tüm sistem paketlerinde ideal olarak bir XML dosyasındaki giriş (manifest adıyla ilişkili olan), statik yer paylaşımları hariç, Bunlar ilgili girişe göre otomatik olarak işlenir. yer paylaşımlı hedef paketi. 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 biridir) şunlardır:

Kullanıcı türü Açıklama
SYSTEM 0. Kullanıcı
FULL Profil dışı kullanıcı 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. Şu anda, AOSP kullanıcı türleri ş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.system.HEADLESS

Örnekler

Aşağıdaki örneklerde en yaygın kullanım alanları ele alınmıştır:

  1. Bir sistem paketinin yalnızca kullanıcı 0'a önceden yüklenmesi için:
    <install-in-user-type package="com.android.example">
        <install-in user-type="SYSTEM" />
     </install-in-user-type>
  2. 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 veya PROFILE 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>
  3. 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>
  4. Bazı sistem paketlerinin türü. 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>
  5. Ayrı kullanıcı türleri belirterek daha ayrıntılı seçeneklerden de yararlanabilirsiniz. Örneğin, aşağıdaki örnek kod bu paketi tüm kullanıcılara yükler Kullanıcı türü yönetilen profil veya davetli olan ya da SYSTEM kategorisinde olan temel türü.
    <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

Paketlerin belirli kullanıcı türlerinde önceden yüklenmesi de engellenebilir (do-not-install-in etiketi kullanılıyor). 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>
Kullanıcı android.os.usertype.full.GUEST türünde (TAM alt türü) ise do-not-install-in nedeniyle bu paket yüklenmedi etiketi, install-in etiketine göre daha önceliklidir.

Davranışı config.xml ile kontrol edin

Yapılandırma kaynağı değeri config_userTypePackageWhitelistMode bu özelliği kontrol eder ve bir cihazın sistem paketlerini nasıl yorumlayacağını belirler herhangi bir kullanıcı türü için giriş içermeyen. Daha fazla bilgi için bkz. frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode

frameworks/base/core/res/res/values/config.xml hücresinde tam sayıyı ayarlayın olarak adlandırılan config_userTypePackageWhitelistMode şu değerler: Bu işaretler birleştirilebilir. En önemli işaretler:

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 paketleri yalnızca izin verilenler listesine eklendiğinde yüklenir.
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 listesine eklenmiş olarak kabul edilir.

Aşağıdaki yapılandırma bu özelliği etkinleştirir (böylece install-in ve do-not-install-in etiketlerine uyulur) ancak belirtilmeyen tüm etiketleri işleme alır sistem paketlerini tüm kullanıcılar için install-in olarak ayarlar:

<integer name="config_userTypePackageWhitelistMode">5</integer>