Implementacja podpisanej konfiguracji

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