Los permisos de Android proporcionan controles que aumentan la conciencia del usuario y limitan el acceso de una app a datos sensibles. La configuración de permisos en Android 8.0 y versiones anteriores incluye la creación de listas de entidades permitidas, sin las cuales se inhabilitan las apps con privilegios, incluso si se encuentran en la ruta de acceso priv-app
. En Android 9 y versiones posteriores, no se iniciará un dispositivo que intente usar apps que no estén en la lista de entidades permitidas de forma adecuada.
Android 10 introdujo el concepto de rol, un nombre único dentro del sistema asociado con ciertos requisitos y privilegios. Asigna roles a las apps para otorgarles permisos con un propósito específico y configura roles predeterminados con recursos de configuración de la plataforma.
Las protecciones mejoradas contra las aplicaciones potencialmente dañinas (APD) mejoran lo siguiente:
- Transparencia sobre el comportamiento de las apps potencialmente dañinas
- El usuario controla el comportamiento de la app.
- Discreción de los desarrolladores de apps cuando usan datos privados, protegidos por permisos
Instalación y permisos de paquetes
En Android 9 y versiones anteriores, las funciones de control de permisos y de instalación de paquetes se incluían en el paquete PackageInstaller
(//packages/apps/PackageInstaller
). En Android 10 y versiones posteriores, la función de control de permisos reside en un paquete independiente, PermissionController
(//packages/apps/PermissionController
). En la Figura 1, se ilustra dónde residen los dos paquetes en Android 10.

Figura 1: Funcionalidades de instalación de paquetes y control de permisos en Android 10
Listas de entidades permitidas y acceso
En Android 6.0 y versiones posteriores, las apps solicitan acceso a permisos peligrosos en el tiempo de ejecución. Android 10 agrega permisos de tiempo de ejecución de reconocimiento de actividad (AR), que le solicitan al usuario que modifique o permita permisos peligrosos.
Android 8.0 requería que se incluyeran explícitamente en la lista de entidades permitidas las apps con privilegios en los archivos XML de configuración del sistema en el directorio /etc/permissions
.
En Android 9 y versiones posteriores, los permisos privilegiados deben estar en la lista de entidades permitidas, o el dispositivo no podrá arrancar.
Para limitar la visibilidad de las APIs internas y evitar que las apps accedan accidentalmente a las bibliotecas de la plataforma, Android 7.0 introdujo los espacios de nombres para las bibliotecas nativas. Esto separa las bibliotecas del sistema de las bibliotecas de la app, y los fabricantes de dispositivos pueden agregar sus propias bibliotecas nativas.
A partir de Android 10, las apps deben tener permisos de firma y consentimiento del usuario para acceder al contenido de la pantalla de un dispositivo. Las apps con privilegios que dependen de la funcionalidad de captura silenciosa, como la toma de capturas de pantalla, deben usar la clase MediaProjection en su lugar.
Android 15 requiere que permitas explícitamente los permisos de firma de la plataforma que solicitan las apps que no son del sistema o que solicitan las actualizaciones a las apps del sistema en los archivos XML de configuración del sistema en el directorio /etc/permissions
.
Transparencia y privacidad
En Android 6.0 y versiones posteriores, la dirección MAC de fábrica del dispositivo está protegida contra el acceso de los proveedores de servicios de Wi-Fi y los analizadores de paquetes. Las restricciones adicionales de Android 10 limitan el acceso de las apps a los identificadores (IDs) inmutables del dispositivo, a menos que estén en la lista de entidades permitidas para permisos con privilegios. (En la sección Conectividad, se proporciona un análisis relacionado sobre los identificadores de dispositivos, ya que esto afecta a los operadores).
En Android 9 y versiones anteriores, los usuarios toman decisiones persistentes cuando otorgan acceso a la ubicación a las apps. A partir de Android 10, la función de permisos de ubicación de triestado les brinda a los usuarios tres opciones para permitir el acceso de la app a la ubicación de un dispositivo. Estos requisitos de permisos se aplican a las apps en Android 10, independientemente del SDK de destino.
Configura permisos para otras funciones de transparencia y privacidad a partir de Android 10
- El recordatorio de
acceso a la ubicación en segundo plano les muestra a los usuarios cuando una app accede a la ubicación de su dispositivo con el permiso de
ACCESS_FINE_LOCATION
en segundo plano. - El acceso a los datos relacionados con la afinidad de contactos, administrados por el componente Proveedor de contactos, es diferente: Las apps no pueden escribir en los datos de afinidades de contactos de la base de datos ni leerlos. Esto afecta a las APIs relacionadas con el llamador.
Configuraciones optimizadas
Se optimizaron las configuraciones de permisos para Android 6.0 y versiones posteriores.
- Las capacidades ambientales para los servicios que inicia
init
mantienen todos los aspectos de la configuración del servicio en un solo archivo.rc
. Cuando configures capacidades para servicios que no se inician coninit
, usafs_config.c
para configurar las capacidades del sistema de archivos. - Android 7.x y versiones anteriores extienden el mecanismo de IDs de Android (AIDs) con un archivo
android_filesystem_config.h
específico del dispositivo para especificar las capacidades del sistema de archivos o los AIDs personalizados del fabricante del dispositivo. Android 8.0 y versiones posteriores admiten un nuevo método para extender las capacidades del sistema de archivos. - En Android 8.0, el manejo de los comandos USB se trasladó de las secuencias de comandos
init
específicas del dispositivo (un reemplazo para las capas HAL) a un daemon USB nativo. La interfaz del HAL de USB se debe implementar en todos los dispositivos que se lancen con Android 8.0 y versiones posteriores.