De acuerdo con esto , cada aplicación en Android se ejecuta como un usuario independiente a nivel de kernel, con una ID de usuario y una ID de grupo únicas.
Entonces, ¿qué sucede bajo el capó cuando agrega un nuevo usuario (por ejemplo, a su tableta compartida)?
Los ID de usuario de Linux que usa Android para aislar las aplicaciones entre sí no tienen ninguna relación con los perfiles de usuario en las tabletas con Android 4.2.
En Android, cada aplicación tiene su propio directorio para guardar datos. El sistema de ID de usuario de Linux se usa para asegurarse de que las aplicaciones no puedan leer los datos de otras. Pero todos estos directorios de datos están dentro de un directorio en el sistema de archivos, /data/user/0
. Digamos que el primer usuario se llama Abulurd e instala la aplicación Showr. Es posible que se le proporcione el ID de usuario 1004 y el directorio /data/user/0/com.shadowburst.showr
.
Ahora, supongamos que crea un nuevo perfil de usuario para Beatrice. Obtiene un directorio nuevo, /data/user/1
, que comienza vacío. Cuando inicia sesión en el dispositivo e instala Showr, no vuelve a descargar la aplicación (porque el instalador de la aplicación de Android sabe que el archivo APK ya está en el dispositivo), pero crea una nueva identificación de usuario 1007 (por ejemplo), y un nuevo directorio /data/user/1/com.shadowburst.showr
.
Android usa los permisos del sistema de archivos de Linux y las diferentes ID de usuario de Linux, no solo para asegurarse de que Abulurd's Showr no pueda leer los datos de las otras aplicaciones de Abulurd, sino también que Abulurd's Showr no pueda leer los datos de Beatrice's Showr. Las dos instancias de Showr se ejecutan en diferentes procesos, con diferentes ID de usuario.
Si está familiarizado con la terminología de Linux, crear un nuevo perfil de usuario es similar a usarlo chroot
en el dispositivo para obtener una parte aislada del sistema de archivos para ejecutar aplicaciones.
Lo que he descrito es el proceso habitual, pero así como el mismo desarrollador (firmado con la misma clave) puede escribir aplicaciones para compartir un directorio de datos con otras aplicaciones, Android les da a las aplicaciones la oportunidad de decir que funcionan con múltiples usuarios. De esta forma, se puede escribir una aplicación para que tenga un proceso para todos los perfiles de usuario, para permitirles compartir datos o realizar alguna función especial. La pantalla de bloqueo tiene que funcionar de esta manera, por ejemplo, porque todos los perfiles de usuario comparten una aplicación de pantalla de bloqueo, que tiene que leer la configuración de la pantalla de bloqueo de todos los usuarios.
system
usuario y se pueden leer en todo el mundo. Si hay algo específico que desea saber sobre el sistema, publique una nueva pregunta.Lo que sucede cuando agrega una nueva cuenta de usuario es que se crea una nueva cuenta (o "Perfil de usuario"). Esto no tiene nada que ver con la administración de usuarios/grupos en el nivel del sistema operativo. Notará que la mayoría de los procedimientos (por ejemplo, este en HowToGeek ) hablan de cuentas , ya que el término "usuario" sería bastante engañoso.
No soy un desarrollador de Android, así que no puedo darte una explicación técnica más profunda. Pero hasta donde yo sé, la función multiusuario se realiza sobre el núcleo de Linux (es decir, en Java/Dalvik). EDITAR: Dan publicó su respuesta al mismo tiempo que yo la mía, así que vea allí los antecedentes técnicos :)
RossC
izzy