Lista de permissões de assinatura

Os apps assinados pela plataforma 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 relacionado ao 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 em que android.os.Build.isDebuggable() retorna true, como builds 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 sistêmicos 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 assinado pelo sistema de uma plataforma não for adicionado à lista de permissões para uma permissão de assinatura de 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 as permissões de apps em um único arquivo XML ou em vários arquivos XML localizados no diretório /etc/permissions:

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

Não há uma regra estrita sobre como o conteúdo é organizado. Os implementadores de dispositivos podem determinar a estrutura do conteúdo, desde que os apps adequados 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 permissões ausentes, instale o app assinado da sua plataforma e inspecione os registros do dispositivo no 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 os user.