Le app con firma della piattaforma sono app che condividono lo stesso certificato di firma (o compatibile) con il pacchetto della piattaforma (android
). Un'app con firma della piattaforma può essere un'app di sistema (situata in una partizione dell'immagine di sistema) o un'app non di sistema. Gli UID condivisi con firma della piattaforma sono UID condivisi (android:sharedUserId
) che contengono app con firma della piattaforma. Le build di debug sono build il cui android.os.Build.isDebuggable()
restituisce true
, ad esempio le build userdebug
o eng
.
In passato, i produttori di dispositivi avevano poco controllo sulle app non di sistema con firma della piattaforma che potevano partecipare a un UID condiviso con firma della piattaforma. A partire da Android
15, i produttori possono consentire esplicitamente alle app non di sistema con firma della piattaforma di partecipare a UID condivisi con firma della piattaforma nei file XML di configurazione del sistema nella directory /etc/permissions
. Se un'app non di sistema con firma della piattaforma non viene aggiunta alla lista consentita per un UID condiviso con firma della piattaforma e l'app tenta comunque di partecipare all'UID condiviso con firma della piattaforma (con android:sharedUserId
nel manifest), l'app non può essere installata nelle build non di debug.
Aggiungere una lista consentita
Puoi elencare le liste consentite per le app in un singolo file XML o in più file XML,
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 in una build non eseguibile in debug e controlla se può essere ancora installata. In caso contrario, puoi controllare i log del dispositivo per verificare se sono presenti messaggi di avviso nel seguente formato:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}