Lista de permissões de assinatura

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

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

Adicionar uma lista de permissões

É possível listar as listas 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 os são adicionadas à 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. semelhantes aos lista de permissões 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 pela plataforma e inspecione o 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.