Signierte Konfiguration implementieren

Mit der Funktion „Signed Config“ können Sie die Konfiguration von Einschränkungen für Nicht-SDK-Schnittstellen in APKs einbetten. So können bestimmte Nicht-SDK-Schnittstellen von der schwarzen Liste entfernt werden, damit sie von AndroidX sicher verwendet werden können. 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. Sie wird vollständig in AOSP unterstützt und erfordert keine OEM-Bemühungen zur Unterstützung.

Beispiele und Quelle

Die Funktion ist auf dem Systemserver unter frameworks/base/services/core/java/com/android/server/signedconfig implementiert. 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 für die AndroidX-Bibliotheken in Zukunft nicht SDK-Schnittstellen von der Blacklist entfernt werden müssen, 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 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. 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 für die Anpassung vorgesehen. OEMs wird empfohlen, die Funktion nicht zu ändern und die Schlüssel nicht zu ersetzen. Jegliche Änderungen daran führen wahrscheinlich dazu, dass AndroidX auf den betroffenen Geräten in Zukunft nicht mehr richtig funktioniert.

Zertifizierungsstufe

Mit dem CTS-Test CtsSignedConfigHostTestCases wird die Implementierung der Funktion überprüft.

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

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