3 votos

¿Alguien puede explicar cómo se implementa el multiusuario en Android 4.4

¿Puede alguien ayudar a dar información sobre cómo se consigue la partición multiusuario en Android 4.4.

Estaba indagando en el código 4.4 específico para la creación de usuarios múltiples.

Existe una clase llamada multiusuario (añadida en 4.4 para multiusuario) cuyos miembros hablan con multiUserService para crear un espacio de usuario.

No entiendo cómo se crea exactamente el espacio seguro en el sistema de archivos.

Tengo abajo una pregunta básica. 1. Cómo se logra la partición del sistema de archivos para múltiples usuarios 2. Cómo se desarrolla la parte de la interfaz de usuario (lanzador, diferentes iconos de la pantalla, etc.) y cuando el usuario cambia cómo recarga los datos de los usuarios por defecto.

5voto

Andy Brudtkuhl Puntos 1714

Funciona de manera muy similar a como las aplicaciones de un usuario están aisladas unas de otras. Mientras que los datos privados de las aplicaciones solían ser almacenados en /data/data ahora está almacenado en /data/users/_n_ donde n es la identificación del perfil de usuario. Cada usuario obtiene su propio directorio, y cada aplicación que utiliza obtiene un directorio dentro de ese. Los permisos del sistema de archivos POSIX protegen los directorios de datos, no sólo de otras aplicaciones, sino también de otros usuarios.

Dado que Android utiliza el proceso POSIX existente, el UID y el mecanismo de seguridad del sistema de archivos, de la misma manera que lo hace para diferentes aplicaciones, la implementación ya es segura sin necesidad de nada especial a nivel del sistema operativo, o de una solución más complicada (y por lo tanto, con un alto consumo de batería) como la virtualización. La virtualización funcionaría mal para esto de todos modos: proporcionar un acceso virtualizado a la red, Bluetooth, hardware NFC, etc. de tal manera que todos los usuarios puedan controlarlo añadiría mucha complejidad innecesaria a las pilas de controladores.

Cuando ambos usuarios ejecutan la misma aplicación (como el lanzador), en realidad hay dos instancias de esa aplicación. Comparten un archivo APK, pero tienen dos procesos separados que se ejecutan bajo diferentes ID de usuario POSIX, y cada uno busca en su propio directorio de datos. De esta manera, nada de lo que puedan escribir se comparte entre los dos usuarios, pero las partes de sólo lectura (como el código ejecutable de la aplicación del archivo APK) se comparten, reduciendo el uso de la RAM y el almacenamiento. Ambas instancias pueden estar ejecutándose a la vez, y el cambio de usuario sólo cambia cuál es la aplicación en primer plano en la pantalla. No es necesario recargar o reiniciar nada.

Esto funciona de la misma manera tanto si la aplicación es una incorporada, o una instalada por el usuario. Hay un incómodo efecto secundario: cuando un usuario actualiza una aplicación, la actualización afecta a todos los usuarios, incluso si la nueva versión necesita más permisos.

Sólo las aplicaciones con el permiso de INTERACT_ACROSS_USERS son especiales. Estas aplicaciones tienen acceso a las APIs dentro del marco de Android para ver todos los directorios de datos de los usuarios a la vez. La pantalla de bloqueo es un ejemplo de este tipo de aplicaciones: en una instancia, necesita ser capaz de leer la configuración y la foto de perfil de cada usuario, para mostrar la interfaz gráfica de usuario "switch users".

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X