Signierte Konfiguration implementieren

Die Funktion „Signierte Konfiguration“ ermöglicht die Einbettung der Konfiguration von Nicht-SDK-Schnittstelleneinschränkungen in APKs. Dadurch können bestimmte Nicht-SDK-Schnittstellen aus der Sperrliste entfernt werden, damit AndroidX sie sicher verwenden kann. So kann das AndroidX-Team die Unterstützung für neue Funktionen in bereits veröffentlichten Android-Versionen hinzufügen. Sie wird ab Android 10 unterstützt.

Wenn Sie die signierte Konfiguration ordnungsgemäß unterstützen, funktionieren die AndroidX-Bibliotheken auch in Zukunft auf Geräten ordnungsgemäß.

Diese Funktion kann nicht angepasst werden. Er wird in AOSP vollständig unterstützt und erfordert keinen OEM-Aufwand für seine Unterstützung.

Beispiele und Quelle

Die Featureimplementierung 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

Die Unterstützung der Funktion ist mit keinem Aufwand verbunden und es gibt keine speziellen Hardwareanforderungen.

Bei dieser Funktion werden zwei Anwendungsmetadatenschlüssel verwendet, 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 erfordern, dass Nicht-SDK-Schnittstellen in Zukunft von der Sperrliste entfernt werden, werden die 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 jeweils 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. Der Wert für android.settings.global.signature ist eine ECDSA-p256-Signatur der JSON-Daten. Anhand der Signatur wird der Ursprung der Konfigurationsdaten überprüft.

Die Funktion ist für Nutzer nicht sichtbar.

Personalisierung

Die Funktion ist nicht zur Anpassung gedacht. OEMs raten wir davon ab, die Funktion zu ändern und z. B. die Schlüssel zu ersetzen. Änderungen daran werden wahrscheinlich dazu führen, dass AndroidX in Zukunft auf den betroffenen Geräten nicht mehr ordnungsgemäß funktioniert.

Zertifizierungsstufe

Mit dem CTS-Test CtsSignedConfigHostTestCases wird die Funktionsimplementierung überprüft.

Du kannst die Funktion auch manuell testen, indem du ein geeignetes APK installierst und die adb logcat-Ausgabe ansiehst:

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