Signierte Konfiguration implementieren

Die Funktion „Signierte Konfiguration“ ermöglicht die Einbettung der Konfiguration von Nicht-SDK-Schnittstelleneinschränkungen in APKs. Dies ermöglicht das Entfernen bestimmter Nicht-SDK-Schnittstellen von der Blacklist, damit AndroidX sie sicher verwenden kann. Auf diese Weise 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.

Die ordnungsgemäße Unterstützung von Signed Config stellt sicher, dass die AndroidX-Bibliotheken in Zukunft auf Geräten korrekt funktionieren.

Eine Anpassung dieser Funktion ist nicht möglich. Es wird in AOSP vollständig unterstützt und erfordert keine OEM-Anstrengungen, um es zu unterstützen.

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 eine Beispielverwendung und eine Beispielkonfiguration in cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml .

Implementierung

Es ist kein Aufwand erforderlich, um die Funktion zu unterstützen, und es gibt keine spezifischen 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 . Falls oder wenn die AndroidX-Bibliotheken erfordern, dass Nicht-SDK-Schnittstellen in Zukunft von der schwarzen Liste 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 Verifizierung der Herkunft der Konfigurationsdaten.

Die Funktion ist für den Benutzer nicht sichtbar.

Anpassung

Die Funktion ist nicht für die Anpassung vorgesehen. 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 auf betroffenen Geräten in Zukunft nicht mehr richtig funktioniert.

Validierung

Der CTS-Test CtsSignedConfigHostTestCases verifiziert die Feature-Implementierung.

Sie können die Funktion auch manuell testen, indem Sie ein entsprechendes APK installieren und die Ausgabe von adb logcat :

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