Lista consentita di UID condivisi firmati dalla piattaforma

Le app firmate dalla piattaforma sono app che condividono lo stesso certificato di firma (o un certificato compatibile) con il pacchetto della piattaforma (android). Un'app firmata dalla piattaforma può essere un'app di sistema (che si trova in una partizione dell'immagine di sistema) o un'app non di sistema. Gli UID condivisi firmati dalla piattaforma sono UID condivisi (android:sharedUserId) che contengono app firmate dalla piattaforma. Le build di cui è possibile eseguire il debug sono build il cui android.os.Build.isDebuggable() restituisce true, ad esempio le build userdebug o eng.

Storicamente, i produttori di dispositivi avevano poco controllo su quali app non di sistema firmate dalla piattaforma potevano unirsi a un UID condiviso firmato dalla piattaforma. A partire da Android 15, i produttori possono consentire esplicitamente alle app non di sistema firmate dalla piattaforma di unirsi agli UID condivisi firmati dalla piattaforma nei file XML di configurazione del sistema nella directory /etc/sysconfig. Se un'app non di sistema firmata dalla piattaforma non viene aggiunta alla lista consentita per un UID condiviso firmato dalla piattaforma e l'app tenta comunque di unirsi all'UID condiviso firmato dalla piattaforma (con android:sharedUserId nel manifest), non può essere installata su build non eseguibili in modalità di debug.

Aggiungere una lista consentita

Puoi elencare le liste consentite per le app in un singolo file XML o in più file XML, in modo simile 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>

Trovare la lista consentita mancante

Per trovare una voce mancante nella lista consentita, prova a installare l'app non di sistema firmata dalla piattaforma su una build non eseguibile in modalità di debug e controlla se può comunque essere installata. In caso contrario, puoi controllare i log del dispositivo per il seguente formato dei messaggi di avviso:

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