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}