Lista de permissões de UID compartilhado assinado 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. No Android 15 e versões mais recentes, os fabricantes podem permitir explicitamente que apps que não são do sistema assinados pela plataforma participem de 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 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

Você pode 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}