Implementa la configurazione firmata

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
...