3 votes

Quelqu'un peut-il expliquer comment le multi-utilisateur est implémenté dans Android 4.4 ?

Quelqu'un peut-il aider en donnant des informations sur la façon dont la partition multi-utilisateurs est réalisée sur Android 4.4.

Je creusais dans le code 4.4 spécifique à la création d'utilisateurs multiples.

Il existe une classe appelée multiUser (ajoutée en 4.4 pour le multi-utilisateur) dont les membres communiquent avec multiUserService pour créer un espace utilisateur.

Je ne comprends pas comment exactement l'espace sécurisé est créé dans le système de fichiers.

J'ai la question de base suivante. 1. Comment la partition du système de fichiers est-elle réalisée pour plusieurs utilisateurs ? 2. Comment la partie UI (Launcher, différents icônes d'écran, etc) est développée et lorsque l'utilisateur change, comment recharger les données des utilisateurs par défaut.

5voto

Andy Brudtkuhl Points 1714

Cela fonctionne de manière très similaire à la façon dont les applications d'un utilisateur sont isolées les unes des autres. Alors qu'auparavant les données privées des applications étaient stockées dans /data/data maintenant, il est stocké dans /data/users/_n_ où n est l'ID du profil de l'utilisateur. Chaque utilisateur obtient son propre répertoire, et chaque application qu'il utilise obtient un répertoire à l'intérieur de celui-ci. Les permissions du système de fichiers POSIX protègent les répertoires de données, non seulement des autres applications, mais aussi des autres utilisateurs.

Étant donné qu'Android utilise le mécanisme de sécurité POSIX existant pour les processus, les UID et les systèmes de fichiers, de la même manière que pour les différentes applications, la mise en œuvre est déjà sécurisée sans qu'il soit nécessaire de recourir à un système d'exploitation spécial ou à une solution plus complexe (et donc gourmande en batterie) telle que la virtualisation. De toute façon, la virtualisation fonctionnerait mal dans ce cas : fournir un accès virtualisé au réseau, au Bluetooth, au matériel NFC, etc. de telle sorte que tous les utilisateurs puissent le contrôler ajouterait beaucoup de complexité inutile aux piles de pilotes.

Lorsque les deux utilisateurs exécutent la même application (comme le lanceur), il y a en fait deux instances de cette application. Elles partagent un fichier APK, mais elles ont deux processus distincts qui s'exécutent sous des identifiants POSIX différents, et elles cherchent chacune dans leur propre répertoire de données. Ainsi, rien de ce qu'ils pourraient écrire n'est partagé entre les deux utilisateurs, mais les parties en lecture seule (comme le code exécutable de l'application à partir du fichier APK) sont partagées, ce qui réduit l'utilisation de la RAM et du stockage. Les deux instances peuvent être exécutées en même temps, et le changement d'utilisateur modifie simplement l'application au premier plan sur l'écran. Rien ne doit être rechargé ou redémarré.

Cela fonctionne de la même manière, que l'application soit intégrée ou installée par l'utilisateur. Il y a un effet secondaire gênant : lorsqu'un utilisateur met à jour une application, la mise à jour affecte tous les utilisateurs, même si la nouvelle version nécessite plus d'autorisations.

Seules les applications disposant de la permission INTERACT_ACROSS_USERS sont spéciales. Ces applications ont accès aux API du cadre Android pour consulter les répertoires de données de tous les utilisateurs en même temps. L'écran de verrouillage est un exemple de ce type d'application : dans un cas, il doit pouvoir lire les paramètres et la photo de profil de chaque utilisateur, afin d'afficher l'interface graphique "changer d'utilisateur".

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X