Lista de permissões de UID compartilhados assinados pela plataforma

Os apps conectados à plataforma são aqueles que compartilham o mesmo certificado de assinatura (ou um compatível) com o pacote da plataforma (android). Um app conectado à plataforma pode ser um app do sistema (localizado em uma partição de imagem do sistema) ou um app não relacionado ao sistema. Os UIDs compartilhados conectados à plataforma são UIDs compartilhados (android:sharedUserId) que contêm apps conectados à plataforma. Builds depuráveis são aquelas 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 de 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 sistêmicos assinados pela plataforma se juntem a UIDs compartilhados assinados pela plataforma nos arquivos XML de configuração do sistema no diretório /etc/sysconfig. Se um app não sistêmico assinado pela plataforma não for adicionado à lista de permissões de um UID compartilhado assinado pela plataforma e ainda tentar participar do 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 as 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 lista de permissões ausente

Para encontrar uma entrada ausente na lista de permissões, tente instalar o app não sistêmico assinado pela plataforma em um build não depurável e verifique se ele ainda pode ser instalado. Caso contrário, inspecione os registros do dispositivo para encontrar o seguinte formato de mensagens de aviso:

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