Lista de permissões de UID compartilhados assinados pela plataforma

Apps assinados pela plataforma são apps 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. Os UIDs compartilhados assinados pela plataforma são UIDs compartilhados (android:sharedUserId) que contêm apps assinados pela plataforma. Builds depuráveis são builds em que android.os.Build.isDebuggable() retorna true, como builds userdebug ou eng.

Historicamente, os fabricantes de dispositivos tinham pouco controle sobre quais apps não do sistema assinados pela plataforma podiam participar de um UID compartilhado assinado pela plataforma. A partir do Android 15, os fabricantes podem permitir explicitamente que apps não do sistema assinados pela plataforma se conectem a UIDs compartilhados assinados pela 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 para um UID compartilhado assinado pela plataforma e o app ainda tentar entrar no UID compartilhado assinado pela plataforma (com android:sharedUserId no manifesto), ele não poderá ser instalado em builds não depuráveis.

Adicionar uma lista de permissões

É possível listar listas de permissões para apps em um único arquivo XML ou em vários arquivos XML, semelhante 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 de lista de permissões ausente, tente instalar o app não do sistema assinado pela plataforma em um build não depurável e verifique se ele ainda pode ser instalado. Caso contrário, é possível inspecionar os registros do dispositivo para o seguinte formato de mensagens de aviso:

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