Demnach läuft jede Anwendung in Android als separater Benutzer auf Kernel-Ebene mit einer eindeutigen Benutzer-ID und Gruppen-ID.
Was passiert also unter der Haube, wenn Sie einen neuen Benutzer hinzufügen (z. B. zu Ihrem gemeinsam genutzten Tablet)?
Die Linux-Benutzer-IDs , die Android verwendet, um Apps voneinander zu isolieren, haben keinerlei Bezug zu Benutzerprofilen auf Android 4.2-Tablets.
Bei Android bekommt jede App ein eigenes Verzeichnis zum Speichern von Daten. Das Linux-Benutzer-ID-System wird verwendet, um sicherzustellen, dass Apps die Daten anderer nicht lesen können. Aber alle diese Datenverzeichnisse befinden sich in einem Verzeichnis im Dateisystem, /data/user/0
. Nehmen wir an, der erste Benutzer heißt Abulurd und installiert die App Showr. Es könnte die Benutzer-ID 1004 und das Verzeichnis /data/user/0/com.shadowburst.showr
.
Angenommen, Sie erstellen ein neues Benutzerprofil für Beatrice. Sie bekommt ein neues Verzeichnis, /data/user/1
, das leer beginnt. Wenn sie sich beim Gerät anmeldet und Showr installiert, lädt es die App nicht erneut herunter (da das Android-App-Installationsprogramm weiß, dass sich die APK-Datei bereits auf dem Gerät befindet), aber es erstellt eine neue Benutzer-ID 1007 (z. B.). und ein neues Verzeichnis /data/user/1/com.shadowburst.showr
.
Android verwendet Linux-Dateisystemberechtigungen und die verschiedenen Linux-Benutzer-IDs, um nicht nur sicherzustellen, dass Abulurds Showr die Daten von Abulurds anderen Apps nicht lesen kann, sondern auch, dass Abulurds Showr die Daten von Beatrices Showr nicht lesen kann. Die beiden Instanzen von Showr werden in unterschiedlichen Prozessen mit unterschiedlichen Benutzer-IDs ausgeführt.
Wenn Sie mit der Linux-Terminologie vertraut sind, ähnelt das Erstellen eines neuen Benutzerprofils der Verwendung chroot
auf dem Gerät, um einen isolierten Teil des Dateisystems zum Ausführen von Apps zu erhalten.
Was ich beschrieben habe, ist der übliche Prozess, aber so wie Apps geschrieben werden können, um ein Datenverzeichnis mit anderen Apps desselben Entwicklers zu teilen (signiert mit demselben Schlüssel), gibt Android Apps die Möglichkeit zu sagen, dass sie mit mehreren Benutzern funktionieren. Auf diese Weise kann eine App so geschrieben werden, dass sie einen Prozess für alle Benutzerprofile hat, damit sie Daten teilen oder eine spezielle Funktion ausführen können. Der Sperrbildschirm muss zum Beispiel so funktionieren, weil sich alle Benutzerprofile eine Sperrbildschirm-App teilen, die die Sperrbildschirmeinstellungen aller Benutzer lesen muss.
system
-Dateien leben können. Sie gehören dem Benutzer und sind weltweit lesbar. Wenn Sie etwas Bestimmtes über das System wissen möchten, stellen Sie eine neue Frage.Wenn Sie ein neues Benutzerkonto hinzufügen, wird ein neues Konto (oder „Benutzerprofil“) erstellt. Das hat überhaupt nichts mit der Benutzer-/Gruppenverwaltung auf OS-Ebene zu tun. Sie werden feststellen, dass die meisten Anleitungen (z. B. diese auf HowToGeek ) von Konten sprechen , da der Begriff "Benutzer" ziemlich irreführend wäre.
Ich bin kein Android-Entwickler, daher kann ich Ihnen keine tiefere technische Erklärung geben. Aber soweit ich weiß, ist die Mehrbenutzerfunktion auf dem Linux-Kern (dh in Java/Dalvik) realisiert. EDIT: Dan hat seine Antwort gleichzeitig mit meiner gepostet, also siehe dort für den technischen Hintergrund :)
RossC
Izzy