Signierte Konfiguration implementieren

Mit der Funktion „Signierte Konfiguration“ 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 Blacklist entfernt werden, damit AndroidX sie sicher verwenden kann. So kann das AndroidX-Team Unterstützung für neue Funktionen in Android-Versionen hinzufügen, die bereits veröffentlicht wurden. Sie wird unter Android 10 und höher unterstützt.

Durch die korrekte Unterstützung von Signed Config wird sichergestellt, dass die AndroidX-Bibliotheken auch in Zukunft auf Geräten korrekt funktionieren.

Diese Funktion kann nicht angepasst werden. Sie wird in AOSP vollständig unterstützt und erfordert keinen Aufwand seitens des OEM.

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 ein Beispiel für die Verwendung 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 speziellen Hardwareanforderungen.

Für die Funktion werden zwei Anwendungsschlüssel für Metadaten verwendet, um Konfiguration und Signatur in APKs einzubetten. Diese Schlüssel sind android.settings.global und android.settings.global.signature. Wenn oder wann 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 Base64-codierte Daten. Der Wert für den Schlüssel android.settings.global ist ein JSON-codierter Konfigurationswert, der auf die globalen Einstellungen in SettingsProvider angewendet werden soll. Der Wert für android.settings.global.signature ist eine ECDSA-p256-Signatur der JSON-Daten. Die Signatur wird verwendet, um den Ursprung der Konfigurationsdaten zu überprüfen.

Die Funktion ist für Nutzer nicht sichtbar.

Personalisierung

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

Zertifizierungsstufe

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

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