Lista de permisos de firma permitidos

Las apps firmadas en la plataforma son apps que comparten el mismo certificado de firma (o compatible) con el paquete de la plataforma (android). Una app firmada en la plataforma puede ser una app del sistema (ubicada en una partición de imagen del sistema) o una app que no es del sistema. Los permisos de firma de la plataforma son permisos definidos por el paquete de la plataforma que también tienen el nivel de protección signature. Las compilaciones depurables son aquellas cuyos android.os.Build.isDebuggable() muestran true, como userdebug o eng.

Históricamente, los fabricantes de dispositivos tenían poco control sobre qué permisos de signature de la plataforma se podían otorgar a las apps que no son del sistema firmadas por la plataforma. A partir de Android 15, los fabricantes pueden otorgar permisos de firma de plataforma de forma explícita en los archivos en formato XML de configuración del sistema en el directorio /etc/permissions. Si una app que no es del sistema firmada por la plataforma no se agrega a la lista de entidades permitidas para un permiso de firma de la plataforma, ese permiso actúa como si la app no estuviera firmada por la plataforma en compilaciones no depurables.

Agregar una lista de entidades permitidas

Puedes enumerar las listas de entidades permitidas de permisos para apps en un solo archivo en formato XML o en varios archivos en formato XML ubicados en el directorio frameworks/base/etc/permissions:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

No se aplica ninguna regla estricta a la organización del contenido. Los implementadores de dispositivos pueden determinar la estructura del contenido, siempre y cuando se agreguen las apps y sus permisos adecuados a la lista de entidades permitidas.

Cómo personalizar una lista de entidades permitidas

AOSP incluye una implementación de lista de entidades permitidas que puedes personalizar según sea necesario, de manera similar a la lista de permisos con privilegios. Por ejemplo:

<!--
  ~ This XML file declares which platform signature permissions to grant to
  ~ platform signed nonsystem apps.
  -->

<permissions>
    <signature-permissions package="com.android.example">
        <permission name="android.permission.READ_DEVICE_CONFIG"/>
        ...
    </signature-permissions>
    ...
</permissions>

Cómo buscar los permisos que faltan

Para encontrar los permisos faltantes, instala la app firmada de la plataforma y, luego, inspecciona los registros del dispositivo en busca del siguiente formato de mensajes de advertencia:

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

El sistema puede otorgar el permiso en compilaciones depurables, pero no en compilaciones no depurables, como user.