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.
Le autorizzazioni di firma della piattaforma sono autorizzazioni definite dal pacchetto della piattaforma
che hanno anche il livello di protezione signature
. 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 scarso controllo sulle autorizzazionisignature
della piattaforma che potevano essere concesse alle app non di sistema firmate dalla piattaforma.
A partire da Android 15, i produttori possono concedere esplicitamente le autorizzazioni per le firme della piattaforma nei file XML di configurazione di sistema nella directory /etc/permissions
. Se un'app non di sistema firmata dalla piattaforma non viene
aggiunta alla lista consentita per un'autorizzazione di firma della piattaforma, l'autorizzazione si comporta
come se l'app non fosse firmata dalla piattaforma nelle build non debbugabili.
Aggiungere una lista consentita
Puoi elencare le liste consentite di autorizzazioni per le app in un singolo file XML o in più file XML situati nella directory frameworks/base/etc/permissions
:
/etc/permissions/signature-permissions-OEM_NAME.xml
/etc/permissions/signature-permissions-DEVICE_NAME.xml
Non si applicano regole rigide all'organizzazione dei contenuti. Gli implementatori dei dispositivi possono determinare la struttura dei contenuti, a condizione che le app appropriate e le relative autorizzazioni vengano aggiunte alla lista consentita.
Personalizzare una lista consentita
AOSP include un'implementazione della lista consentita che puoi personalizzare in base alle tue esigenze, simile alla lista consentita per le autorizzazioni privilegiate. Per esempio:
<!--
~ This XML file declares which platform signature permissions to grant to
~ platform signed nonsystem apps.
-->
<permissions>
<signature-permissions package="com.android.example">
<permission name="android.permission.READ_DEVICE_CONFIG"/>
...
</signature-permissions>
...
</permissions>
Trovare le autorizzazioni mancanti
Per trovare le autorizzazioni mancanti, installa l'app firmata per la piattaforma e controlla i log del dispositivo per verificare se sono presenti messaggi di avviso nel seguente formato:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
Il sistema può comunque concedere l'autorizzazione alle build di debug, ma non alle build non di debug, come le build user
.