Implementa la configurazione firmata

La funzionalità Configurazione firmata consente di incorporare la configurazione delle limitazioni relative alle interfacce non SDK in APK. In questo modo è possibile rimuovere interfacce non SDK specifiche dalla lista nera, per consentire ad AndroidX di utilizzarle in sicurezza. In questo modo, il team di AndroidX può aggiungere il supporto per le nuove funzionalità alle versioni di Android già rilasciate. È supportato su Android 10 e versioni successive.

Il supporto corretto di Signed Config garantisce che le librerie AndroidX funzioneranno correttamente sui dispositivi in futuro.

Non è possibile personalizzare questa funzionalità. È completamente supportato in AOSP e non richiede alcun intervento da parte degli OEM per il supporto.

Esempi e origine

L'implementazione della funzionalità è 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 una configurazione di esempio in cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml.

Implementazione

Non è richiesta alcuna azione per supportare la funzionalità e non sono previsti requisiti hardware specifici.

La funzionalità utilizza due chiavi dei metadati dell'applicazione per incorporare la configurazione e una firma all'interno degli APK. Queste chiavi sono android.settings.global e android.settings.global.signature. Se o quando le librerie AndroidX richiederanno in futuro la rimozione di interfacce non SDK dalla lista nera, i valori di queste chiavi verranno pubblicati dal team di Android e/o nell'ambito di AndroidX.

Le chiavi dei metadati 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 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 all'utente.

Personalizzazione

La funzionalità non è destinata alla personalizzazione. Gli OEM sono scoraggiati dall'effettuare modifiche alla funzionalità, inclusa la sostituzione dei tasti. Eventuali modifiche potrebbero causare 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 esaminando l'output adb logcat:

$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...