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 poderiam 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 não do sistema assinado pela plataforma não for adicionado à lista de permissões de assinatura da plataforma, essa permissão vai agir como se o app não fosse assinado pela plataforma em builds não depuráveis.

Adicionar uma lista de permissões

É possível listar 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

Não há regras rígidas sobre a 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 pode ser personalizada 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.