Android unterstützt mehrere Nutzer auf einem einzigen Gerät. Weitere Informationen finden Sie unter Mehrere Nutzer unterstützen. Da nicht alle Systempakete für alle Arten von Android-Nutzern nützlich sind, kann mit einer Zulassungsliste angeben, welche Systempakete vorinstalliert werden sollen für jede Art von Nutzenden. Wenn Sie nicht benötigte Systempakete nicht vorinstallieren, können Sie die Erstellungs-, Start- und Speichernutzungszeiten von Nutzern optimieren.
Verwenden Sie XML-Dateien für die Systemkonfiguration, die auf frameworks/base/data/etc/preinstalled-packages-platform.xml
basieren, um anzugeben, welche Systempakete für neue Nutzer basierend auf ihrem Nutzertyp zuerst installiert werden sollen. Alle Systempakete auf dem Gerät sollten idealerweise
ein Eintrag in einer XML-Datei (mit dem Manifestnamen codiert), mit Ausnahme von statischen Overlays,
die stattdessen automatisch gemäß dem Eintrag für ihre
Overlay-Zielpaket.
Wie das Gerät mit Systempaketen umgehen soll, die hier nicht aufgeführt sind, wird durch den Konfigurationsmodus gesteuert.
Nutzertypen
Basisnutzertypen (jeder Nutzer ist mindestens einer dieser Typen):
Nutzertyp | Beschreibung |
---|---|
SYSTEM |
Nutzer 0 |
FULL |
Alle Nutzer ohne Profil. |
PROFILE |
Ein Profil für einen menschlichen Nutzer. |
Die genaue Bedeutung der einzelnen Elemente wird in den
frameworks/base/core/java/android/content/pm/UserInfo.java
Detailliertere Kontrolle ist möglich, wenn Sie
einzelne Nutzertypen angeben,
Jeder Nutzer entspricht genau einem dieser Nutzertypen, einschließlich der AOSP-Nutzertypen
definiert in frameworks/base/core/java/android/os/UserManager.java
und alle benutzerdefinierten OEM-Nutzertypen,
frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
Weitere Informationen finden Sie auf der Seite Nutzertypen.
Informationen.
Derzeit umfassen AOSP-Nutzertypen:
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
Beispiele
Die folgenden Beispiele beziehen sich auf die häufigsten Anwendungsfälle:
- So sorgen Sie dafür, dass ein Systempaket nur für Nutzer 0 vorinstalliert wird:
<install-in-user-type package="com.android.example"> <install-in user-type="SYSTEM" /> </install-in-user-type>
- Damit ein Systempaket für alle Nutzer (z. B. ein Webbrowser) vorinstalliert wird, d. h. für alle Nutzer vom Typ
FULL
oderPROFILE
, die alle Nutzer ansprechen:<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> </install-in-user-type>
- Für ein Systempaket, das auf allen menschlichen Nutzern mit Ausnahme von Profilnutzern vorinstalliert wird.
Dies könnte beispielsweise auf eine Hintergrund-App angewendet werden:
<install-in-user-type package="com.android.example"> <install-in user-type="FULL" /> </install-in-user-type>
- Einige Systempakete müssen wirklich für alle Nutzer verfügbar sein, unabhängig vom Nutzertyp. Verwenden Sie in diesen Fällen Folgendes:
<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>
- Detailliertere Optionen sind auch verfügbar, wenn Sie einzelne Nutzer angeben
Typen. Im folgenden Beispielcode wird dieses Paket beispielsweise auf allen Nutzern installiert, deren Nutzertyp ein verwaltetes Profil oder ein Gast ist oder die einen
SYSTEM
-Basistyp haben.<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“
Mit dem do-not-install-in
-Tag lässt sich auch verhindern, dass Pakete für bestimmte Nutzertypen vorinstalliert werden. do-not-install-in
-Tags überschreiben install-in
-Tags in jeder Datei. Beispiel:
<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
ist (ein Untertyp von FULL), wird dieses Paket nicht installiert, da das do-not-install-in
-Tag Vorrang vor install-in
hat.
Verhalten mit config.xml steuern
Der Wert config_userTypePackageWhitelistMode
der Konfigurationsressource
steuert diese Funktion und bestimmt, wie ein Gerät Systempakete interpretiert
die keinen Eintrag für
einen Nutzertyp haben. Weitere Informationen finden Sie unter frameworks/base/core/res/res/values/config.xml#config_userTypePackageWhitelistMode
.
Legen Sie in frameworks/base/core/res/res/values/config.xml
die Ganzzahl mit dem Namen config_userTypePackageWhitelistMode
auf eine Kombination der folgenden Werte fest. Diese Flags können kombiniert werden. Die wichtigsten Flags sind:
Wert | Beschreibung |
---|---|
0 (0b0000) |
Deaktivieren Installieren Sie alle Systempakete. |
1 (0b0001) |
Erzwingen Installieren Sie nur Systempakete, wenn Sie auf der Zulassungsliste stehen. |
4 (0b0100) |
Pakete, die nicht in der Zulassungsliste erwähnt werden, gelten als implizit auf der Zulassungsliste. |
8 (0b1000) |
Alle Pakete, die nicht in der Zulassungslistendatei aufgeführt sind, als implizit auf die Zulassungsliste gesetzt werden nur für SYSTEM-Nutzer. |
Mit der folgenden Konfiguration wird die Funktion aktiviert (damit die Tags install-in
und do-not-install-in
befolgt werden), aber alle nicht genannten Systempakete werden für alle Nutzer als install-in
behandelt:
<integer name="config_userTypePackageWhitelistMode">5</integer>