Implementare la configurazione firmata

La funzionalità Signed Config consente di incorporare la configurazione delle restrizioni dell'interfaccia non SDK negli APK. Ciò consente di rimuovere specifiche interfacce non SDK dalla lista nera, per consentire ad AndroidX di utilizzarle in sicurezza. Ciò consente al team di AndroidX di aggiungere il supporto per nuove funzionalità sulle versioni Android che sono già state rilasciate. È supportato in 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 alcuno sforzo da parte dell'OEM per supportarlo.

Esempi e fonte

L'implementazione della funzionalità è nel server di sistema in 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 è richiesto alcuno sforzo per supportare la funzionalità e non sono previsti requisiti hardware specifici.

La funzionalità utilizza due chiavi di 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 in futuro le librerie AndroidX richiederanno la rimozione delle interfacce non SDK dalla lista nera, i valori per queste chiavi verranno pubblicati dal team Android e/o come parte di AndroidX.

Le chiavi dei metadati APK android.settings.global e android.settings.global.signature contengono entrambe dati codificati 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 per 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 dal modificare la funzionalità, inclusa la sostituzione delle chiavi. Eventuali modifiche potrebbero impedire il corretto funzionamento di AndroidX sui dispositivi interessati in futuro.

Validazione

Il test CTS CtsSignedConfigHostTestCases verifica l'implementazione della funzionalità.

Puoi anche testare manualmente la funzionalità installando un APK appropriato e controllando l'output adb logcat :

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