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