Signierte Konfiguration implementieren

Mit der Funktion „Signierte Konfiguration“ können Konfigurationen von Einschränkungen für Nicht-SDK-Schnittstellen in APKs eingebettet werden. So 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 Android-Versionen hinzufügen, die bereits veröffentlicht wurden. Die Funktion wird in Android 10 und höher unterstützt.

Durch die ordnungsgemäße Unterstützung der signierten Konfiguration wird sichergestellt, dass die AndroidX-Bibliotheken in Zukunft auf Geräten ordnungsgemäß funktionieren.

Diese Funktion kann nicht angepasst werden. Sie wird vollständig in AOSP unterstützt und erfordert keine OEM-Maßnahmen.

Beispiele und Quelle

Die Implementierung der Funktion befindet sich auf dem Systemserver unter frameworks/base/services/core/java/com/android/server/signedconfig. Der CTS-Test CtsSignedConfigHostTestCases enthält eine Beispielnutzung und eine Beispielkonfiguration in cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml.

Implementierung

Es sind keine Maßnahmen erforderlich, um die Funktion zu unterstützen, und es gibt keine spezifischen Hardwareanforderungen.

Die Funktion verwendet zwei Metadatenschlüssel für Anwendungen, um Konfiguration und Signatur in APKs einzubetten. Diese Schlüssel sind android.settings.global und android.settings.global.signature. Wenn die AndroidX-Bibliotheken in Zukunft Nicht-SDK-Schnittstellen aus der Blacklist entfernen müssen, 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 base64-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 wird verwendet, um die Herkunft der Konfigurationsdaten zu überprüfen.

Die Funktion ist für Nutzer nicht sichtbar.

Anpassung

Die Funktion ist nicht für die Anpassung vorgesehen. OEMs wird davon abgeraten, die Funktion zu ändern, einschließlich des Ersetzens der Schlüssel. Alle Änderungen daran führen wahrscheinlich dazu, dass AndroidX in Zukunft auf betroffenen Geräten nicht mehr ordnungsgemäß funktioniert.

Validierung

Der CTS-Test CtsSignedConfigHostTestCases überprüft die Implementierung der Funktion.

Sie können die Funktion auch manuell testen, indem Sie ein geeignetes APK installieren und die adb logcat-Ausgabe prüfen:

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