Implementazione della configurazione firmata

La funzionalità Signed Config consente di incorporare la configurazione delle restrizioni dell'interfaccia non SDK negli APK. Ciò consente di rimuovere dalla blacklist specifiche interfacce non SDK, per consentire ad AndroidX di utilizzarle in sicurezza. Ciò consente al team AndroidX di aggiungere il supporto per le nuove funzionalità nelle versioni Android che sono già state rilasciate. È supportato in Android 10 e versioni successive.

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

Non è possibile alcuna personalizzazione di questa funzione. È completamente supportato in AOSP e non richiede alcuno sforzo 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 l'utilizzo di esempio e una configurazione di esempio in cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml .

Implementazione

Non è richiesto alcuno sforzo per supportare la funzionalità e non ci sono requisiti hardware specifici.

La funzione 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 le librerie AndroidX richiedono la rimozione delle interfacce non SDK dalla lista nera in futuro, 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 entrambi dati codificati in base 64. Il valore per la chiave android.settings.global è 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 funzione non è visibile dall'utente.

Personalizzazione

La funzione non è destinata alla personalizzazione. Gli OEM sono sconsigliati dal modificare la funzionalità, inclusa la sostituzione delle chiavi. È probabile che qualsiasi modifica ad esso impedisca il corretto funzionamento 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
...