Implementieren Sie eine signierte Konfiguration

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