Wdrożenie podpisanej konfiguracji

Funkcja Signed Config umożliwia umieszczanie w plikach APK konfiguracji ograniczeń interfejsu innego niż SDK. Umożliwia to usunięcie z czarnej listy określonych interfejsów spoza SDK, aby umożliwić bezpieczne korzystanie z nich przez AndroidX. Dzięki temu zespół AndroidX może dodawać obsługę nowych funkcji w wersjach Androida, które zostały już wydane. Jest on obsługiwany na urządzeniach z Androidem 10 i nowszym.

Prawidłowa obsługa podpisanej konfiguracji zapewnia, że biblioteki AndroidX będą w przyszłości działać prawidłowo na urządzeniach.

Nie można dostosować tej funkcji. Jest w pełni obsługiwany w AOSP i nie wymaga żadnych działań ze strony producenta OEM.

Przykłady i źródło

Implementacja tej funkcji znajduje się na serwerze systemowym pod adresem frameworks/base/services/core/java/com/android/server/signedconfig. Test CTSCtsSignedConfigHostTestCases zawiera przykłady użycia i przykładową konfigurację w cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml.

Implementacja

Obsługa tej funkcji nie wymaga żadnego wysiłku ani specjalnych wymagań sprzętowych.

Ta funkcja używa 2 kluczy metadanych aplikacji do osadzania konfiguracji i podpisu w plikach APK. Są to klawisze android.settings.globalandroid.settings.global.signature. Jeśli w przyszłości biblioteki AndroidX będą wymagać usunięcia z czarnej listy interfejsów innych niż SDK, wartości tych kluczy zostaną opublikowane przez zespół Androida lub w ramach AndroidaX.

Klucze metadanych pakietu APK android.settings.globalandroid.settings.global.signature zawierają dane zakodowane w formacie base64. Wartość klucza android.settings.global to zakodowane w formacie JSON wartości konfiguracji, które mają być zastosowane do ustawień globalnych w SettingsProvider. Wartość parametru 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żytkowników.

Dostosowywanie

Ta funkcja nie jest przeznaczona do dostosowywania. Nie zalecamy producentom OEM modyfikowania tej funkcji, w tym zastępowania klawiszy. Wszelkie zmiany w tym pliku mogą w przyszłości spowodować nieprawidłowe działanie Androida X na urządzeniach, których dotyczy problem.

Weryfikacja

Test CTS CtsSignedConfigHostTestCases weryfikuje implementację funkcji.

Możesz też przetestować tę funkcję ręcznie, instalując odpowiedni plik APK i sprawdzając adb logcat:

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