Die Signed Config-Funktion ermöglicht das Einbetten der Konfiguration von Nicht-SDK-Schnittstelleneinschränkungen in APKs. Dadurch können bestimmte Nicht-SDK-Schnittstellen aus der Blacklist entfernt werden, damit AndroidX sie sicher verwenden kann. Dadurch kann das AndroidX-Team Unterstützung für neue Funktionen in bereits veröffentlichten Android-Versionen hinzufügen. Es wird in Android 10 und höher unterstützt.
Durch die ordnungsgemäße Unterstützung von Signed Config wird sichergestellt, dass die AndroidX-Bibliotheken in Zukunft auf Geräten ordnungsgemäß funktionieren.
Eine Anpassung dieser Funktion ist nicht möglich. Es wird in AOSP vollständig unterstützt und erfordert keinen OEM-Aufwand zur Unterstützung.
Beispiele und Quelle
Die Funktionsimplementierung befindet sich auf dem Systemserver unter frameworks/base/services/core/java/com/android/server/signedconfig
. Der CTS-Test CtsSignedConfigHostTestCases
enthält Beispielverwendungen und eine Beispielkonfiguration in cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
.
Implementierung
Zur Unterstützung dieser Funktion ist kein Aufwand erforderlich, und es gibt keine besonderen Hardwareanforderungen.
Die Funktion verwendet zwei Anwendungsmetadatenschlüssel, um die Konfiguration und eine Signatur in APKs einzubetten. Diese Schlüssel sind android.settings.global
und android.settings.global.signature
. Wenn die AndroidX-Bibliotheken in Zukunft erfordern, dass Nicht-SDK-Schnittstellen von der Blacklist entfernt werden, werden Werte für diese Schlüssel vom Android-Team und/oder als Teil von AndroidX veröffentlicht.
Die APK-Metadatenschlüssel android.settings.global
und android.settings.global.signature
enthalten beide Base-64-codierte Daten. Der Wert für den Schlüssel android.settings.global
sind JSON-codierte Konfigurationswerte, die auf die globalen Einstellungen in SettingsProvider
angewendet werden sollen. Der Wert für android.settings.global.signature
ist eine ECDSA-p256-Signatur der JSON-Daten. Die Signatur dient zur Überprüfung der Herkunft der Konfigurationsdaten.
Die Funktion ist für den Benutzer nicht sichtbar.
Anpassung
Die Funktion ist nicht zur Anpassung gedacht. OEMs wird davon abgeraten, die Funktion zu ändern, einschließlich des Austauschs der Schlüssel. Jegliche Änderungen daran werden wahrscheinlich dazu führen, dass AndroidX in Zukunft auf den betroffenen Geräten nicht mehr ordnungsgemäß funktioniert.
Validierung
Der CTS-Test CtsSignedConfigHostTestCases
überprüft die Funktionsimplementierung.
Sie können die Funktion auch manuell testen, indem Sie ein entsprechendes APK installieren und die adb logcat
Ausgabe überprüfen:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...