Lista de permissões de UID compartilhado assinado pela plataforma

Os apps assinados pela plataforma são aqueles que compartilham a mesma assinatura (ou compatível). certificado com o pacote de 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 que não é do sistema. Os UIDs compartilhados assinados pela plataforma são UIDs compartilhados (android:sharedUserId) que contêm apps assinados pela plataforma. Os builds depuráveis são aqueles com android.os.Build.isDebuggable() retornam true, como userdebug ou eng. builds.

Historicamente, os fabricantes de dispositivos tinham pouco controle sobre quais plataformas apps que não são do sistema podem participar de um UID compartilhado assinado pela plataforma. A partir do Android 15, os fabricantes podem autorizar explicitamente as assinaturas apps que não são do sistema possam ingressar em UIDs compartilhados assinados pela plataforma na configuração do sistema. Arquivos XML no diretório /etc/permissions. Se um não sistema assinado pela plataforma o app não é adicionado à lista de permissões para um UID compartilhado assinado pela plataforma, e o app ainda tenta participar do UID compartilhado assinado pela plataforma (com android:sharedUserId no manifesto), esse app não pode ser instalado em builds não depuráveis.

Adicionar uma lista de permissões

Você pode listar as listas de permissões para apps em um único arquivo XML ou em vários arquivos XML. semelhantes a frameworks/base/data/etc/package-shareduid-allowlist.xml:

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

Encontrar uma lista de permissões ausente

Para encontrar uma entrada ausente na lista de permissões, tente instalar o sistema não assinado pela plataforma em um build não depurável e verifique se ele ainda pode ser instalado. Caso contrário, pode inspecionar registros de dispositivos em busca do seguinte formato de mensagens de aviso:

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}