Le app firmate sulla piattaforma sono app che condividono lo stesso certificato di firma (o compatibile) con il pacchetto della piattaforma (android
). Un'app firmata dalla piattaforma può essere un'app di sistema (che si trova su 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
le cui android.os.Build.isDebuggable()
restituiscono true
, ad esempio 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 aggiudicata alla lista consentita per un'autorizzazione di firma della piattaforma, l'autorizzazione agisce 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 applica alcuna regola rigida 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 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 dalla piattaforma ed esamina i log del dispositivo per rilevare il seguente formato di 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 alle build di debug, ma non alle build non di debug, come le build user
.