La funzionalità Signed Config consente di incorporare la configurazione delle limitazioni relative alle interfacce non SDK negli APK. Ciò consente di rimuovere interfacce non SDK specifiche dalla lista nera, per consentire ad AndroidX di utilizzarle in modo sicuro. In questo modo, il team di AndroidX può aggiungere il supporto per nuove funzionalità nelle versioni di Android già rilasciate. È supportato in Android 10 e versioni successive.
Il supporto corretto della configurazione firmata garantisce che le librerie AndroidX funzionino correttamente sui dispositivi in futuro.
Non è possibile personalizzare questa funzionalità. È completamente supportato in AOSP e non richiede alcuno sforzo da parte dell'OEM per supportarlo.
Esempi e origine
L'implementazione della funzionalità si trova nel server di sistema all'indirizzo
frameworks/base/services/core/java/com/android/server/signedconfig
. Il test CTS
CtsSignedConfigHostTestCases
include un esempio di utilizzo e un esempio
di configurazione in
cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
.
Implementazione
Non è necessario alcun intervento per supportare la funzionalità e non esistono requisiti hardware specifici.
La funzionalità utilizza due chiavi dei metadati dell'applicazione per incorporare la configurazione e una
firma all'interno degli APK. Questi tasti sono android.settings.global
e
android.settings.global.signature
. Se o quando le librerie AndroidX richiederanno
la rimozione delle interfacce non SDK dalla lista nera in futuro, i valori di
queste chiavi verranno pubblicati dal team Android e/o come parte di AndroidX.
Le chiavi dei metadati dell'APK android.settings.global
e
android.settings.global.signature
contengono entrambe dati codificati in base 64. Il valore
per la chiave android.settings.global
è costituito da valori di configurazione codificati in formato JSON da applicare
alle impostazioni globali in SettingsProvider
. Il valore di
android.settings.global.signature
è una firma ECDSA-p256 dei dati JSON.
La firma viene utilizzata per verificare l'origine dei dati di configurazione.
La funzionalità non è visibile agli utenti.
Personalizzazione
La funzionalità non è pensata per la personalizzazione. I produttori OEM sono invitati a non modificare la funzionalità, inclusa la sostituzione dei tasti. Qualsiasi modifica probabilmente causerà il malfunzionamento di AndroidX sui dispositivi interessati in futuro.
Convalida
Il test CTS CtsSignedConfigHostTestCases
verifica l'implementazione della funzionalità.
Puoi anche testare la funzionalità manualmente installando un APK appropriato e
controllando l'output di adb logcat
:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...