Implementa la configurazione firmata

La funzionalità Signed Config consente di incorporare la configurazione delle limitazioni dell'interfaccia 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 fonte

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 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 richiedono la rimozione delle interfacce non SDK dalla blacklist in futuro, i valori per queste chiavi verranno pubblicati dal team 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 sono valori di configurazione con codifica 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 apportata 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 ispezionando l'output di adb logcat:

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