Lista de permissões de assinatura

Os apps assinados pela plataforma são aqueles que compartilham o mesmo certificado de assinatura (ou compatível) com o pacote da plataforma (android). Um app assinado pela plataforma pode ser um app do sistema (localizado em uma partição de imagem do sistema) ou um app não do sistema. As permissões de assinatura da plataforma são definidas pelo pacote da plataforma e também têm o nível de proteção signature. Os builds depuráveis são aqueles cujos android.os.Build.isDebuggable() retornam true, como userdebug ou eng.

Historicamente, os fabricantes de dispositivos tinham pouco controle sobre quais permissões signature da plataforma podiam ser concedidas a apps não do sistema assinados pela plataforma. A partir do Android 15, os fabricantes podem conceder explicitamente permissões de assinatura da plataforma nos arquivos XML de configuração do sistema no diretório /etc/permissions. Se um app sem sistema assinado pela plataforma não for adicionado à lista de permissões para uma permissão de assinatura de plataforma, essa permissão vai atuar como se o app não estivesse assinado pela plataforma em builds não depuráveis.

Adicionar uma lista de permissões

É possível listar listas de permissões de permissões para apps em um único arquivo XML ou em vários arquivos XML localizados no diretório frameworks/base/etc/permissions:

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

Nenhuma regra rígida se aplica à organização do conteúdo. Os implementadores de dispositivos podem determinar a estrutura do conteúdo, desde que os apps apropriados e as permissões deles sejam adicionados à lista de permissões.

Personalizar uma lista de permissões

O AOSP inclui uma implementação de lista de permissões que você pode personalizar conforme necessário, semelhante à lista de permissões privilegiadas. Por exemplo:

<!--
  ~ 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>

Encontrar permissões ausentes

Para encontrar as permissões ausentes, instale o app assinado pela plataforma e inspecione os registros do dispositivo para o seguinte formato de mensagens de aviso:

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

O sistema ainda pode conceder a permissão em builds depuráveis, mas não em builds não depuráveis, como builds user.