Funkcja Signed Config umożliwia osadzanie konfiguracji ograniczeń interfejsu spoza zestawu SDK w plikach APK. Pozwala to na usunięcie z czarnej listy określonych interfejsów innych niż SDK, aby system AndroidX mógł z nich bezpiecznie korzystać. Dzięki temu zespół AndroidX może dodać obsługę nowych funkcji w wersjach Androida, które zostały już wydane. Jest obsługiwany w systemie Android 10 i nowszych.
Właściwa obsługa Signed Config zapewnia, że biblioteki AndroidX będą działać poprawnie na urządzeniach w przyszłości.
Brak możliwości dostosowania tej funkcji. Jest w pełni obsługiwany w AOSP i nie wymaga żadnego wysiłku OEM, aby go wspierać.
Przykłady i źródło
Implementacja funkcji znajduje się na serwerze systemowym pod adresem frameworks/base/services/core/java/com/android/server/signedconfig
. Test CTS CtsSignedConfigHostTestCases
obejmuje przykładowe użycie i przykładową konfigurację w cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
.
Realizacja
Obsługa tej funkcji nie wymaga żadnego wysiłku i nie ma szczególnych wymagań sprzętowych.
Ta funkcja używa dwóch kluczy metadanych aplikacji do osadzenia konfiguracji i podpisu w plikach APK. Te klucze to android.settings.global
i android.settings.global.signature
. Jeśli lub gdy biblioteki AndroidX będą wymagać w przyszłości usunięcia interfejsów innych niż SDK z czarnej listy, wartości tych kluczy zostaną opublikowane przez zespół Androida i/lub jako część systemu AndroidX.
Klucze metadanych APK android.settings.global
i android.settings.global.signature
zawierają dane zakodowane w base-64. Wartość klucza android.settings.global
to wartości konfiguracyjne zakodowane w formacie JSON, które mają być stosowane do ustawień globalnych w SettingsProvider
. Wartość android.settings.global.signature
to podpis ECDSA-p256 danych JSON. Podpis służy do weryfikacji pochodzenia danych konfiguracyjnych.
Funkcja nie jest widoczna dla użytkownika.
Dostosowywanie
Ta funkcja nie jest przeznaczona do dostosowywania. Producenci OEM są zniechęceni do modyfikowania funkcji, w tym wymiany kluczy. Wszelkie zmiany w nim prawdopodobnie spowodują w przyszłości nieprawidłowe działanie systemu AndroidX na urządzeniach, których dotyczy ten problem.
Walidacja
Test CTS CtsSignedConfigHostTestCases
weryfikuje implementację funkcji.
Możesz również przetestować tę funkcję ręcznie, instalując odpowiedni pakiet APK i sprawdzając dane wyjściowe adb logcat
:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...