Zaimplementuj podpisaną konfigurację

Funkcja Signed Config umożliwia osadzanie konfiguracji ograniczeń interfejsu innego niż SDK w plikach APK. Umożliwia to usunięcie określonych interfejsów innych niż SDK z czarnej listy, aby umożliwić AndroidX bezpieczne korzystanie z nich. 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 wersjach.

Prawidłowa obsługa Signed Config gwarantuje, że biblioteki AndroidX będą poprawnie działać na urządzeniach w przyszłości.

Nie ma możliwości dostosowania tej funkcji. Jest w pełni obsługiwany w AOSP i nie wymaga żadnego wysiłku OEM, aby go obsługiwać.

Przykłady i źródło

Implementacja funkcji znajduje się na serwerze systemowym pod 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 specjalnych wymagań sprzętowych.

Ta funkcja wykorzystuje dwa klucze metadanych aplikacji do osadzania konfiguracji i podpisu w plikach APK. Te klucze to android.settings.global i android.settings.global.signature . Jeśli lub kiedy biblioteki AndroidX będą w przyszłości wymagały usunięcia z czarnej listy interfejsów innych niż SDK, wartości tych kluczy zostaną opublikowane przez zespół Androida i/lub w ramach AndroidX.

Klucze metadanych APK android.settings.global i android.settings.global.signature , zawierają dane zakodowane w formacie Base-64. Wartość klucza android.settings.global to zakodowane w formacie JSON wartości konfiguracyjne, które mają zostać zastosowane 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.

Ta funkcja nie jest widoczna dla użytkownika.

Dostosowywanie

Ta funkcja nie jest przeznaczona do dostosowywania. Producentów OEM odradza się modyfikowanie tej funkcji, w tym wymianę kluczy. Wszelkie zmiany w nim prawdopodobnie spowodują, że AndroidX nie będzie w przyszłości działać prawidłowo na dotkniętych urządzeniach.

Walidacja

Test CTS CtsSignedConfigHostTestCases weryfikuje implementację funkcji.

Możesz także przetestować tę funkcję ręcznie, instalując odpowiedni plik APK i sprawdzając dane wyjściowe adb logcat :

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