Lista consentita delle autorizzazioni di firma

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. Le autorizzazioni di firma della piattaforma sono autorizzazioni definite dal pacchetto della piattaforma che hanno anche il livello di protezione signature. 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 sulle autorizzazioni della piattaforma signature che potevano essere concesse alle app non di sistema firmate dalla piattaforma. A partire da Android 15, i produttori possono concedere esplicitamente le autorizzazioni di firma della piattaforma nei file XML di configurazione del 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, questa autorizzazione si comporta come se l'app non fosse firmata dalla piattaforma nelle build non eseguibili in modalità di debug.

Aggiungere una lista consentita

Puoi elencare le liste consentite di autorizzazioni per le app in un singolo file XML o in più file XML che si trovano nella directory /etc/permissions:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

Non esiste una regola rigorosa che stabilisca come devono essere organizzati i contenuti. Gli implementatori di 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 esigenze, in modo simile alla lista consentita delle 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 della tua piattaforma e controlla i log del dispositivo per il seguente formato dei messaggi di avviso:

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

Il sistema può comunque concedere l'autorizzazione per le build di cui è possibile eseguire il debug, ma non per le build di cui non è possibile eseguire il debug, ad esempio le build user.