Funkcja podpisanej konfiguracji umożliwia umieszczanie w plikach APK konfiguracji ograniczeń interfejsu niebędącego pakietem SDK. Umożliwia to usunięcie z czarnej listy określonych interfejsów innych niż SDK, aby umożliwić AndroidX bezpieczne korzystanie z tych interfejsów. Dzięki temu zespół AndroidX może dodawać obsługę nowych funkcji w wersjach Androida, które zostały już wydane. Jest ona obsługiwana w Androidzie 10 i nowszych.
Prawidłowa obsługa podpisanej konfiguracji daje pewność, że biblioteki AndroidaX będą działać prawidłowo na urządzeniach w przyszłości.
Ta funkcja nie jest możliwa. Jest w pełni obsługiwana w AOSP i nie wymaga żadnych działań OEM.
Przykłady i źródło
Implementacja funkcji znajduje się na serwerze systemu pod adresem frameworks/base/services/core/java/com/android/server/signedconfig
. Test CTS CtsSignedConfigHostTestCases
zawiera przykładowe użycie i przykładową konfigurację w pliku cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
.
Implementacja
Obsługa tej funkcji nie wymaga żadnych działań i nie ma żadnych konkretnych wymagań sprzętowych.
Ta funkcja używa 2 kluczy metadanych aplikacji, aby osadzić konfigurację i podpis w plikach APK. Te klucze to android.settings.global
i android.settings.global.signature
. Jeśli w przyszłości biblioteki AndroidX będą wymagać usunięcia interfejsów innych niż SDK z czarnej listy, wartości tych kluczy zostaną opublikowane przez zespół Androida lub w ramach AndroidX.
Klucze metadanych pliku APK android.settings.global
i android.settings.global.signature
zawierają dane zakodowane w standardzie base-64. Wartość klucza android.settings.global
to zakodowane w formacie JSON wartości konfiguracyjne, które mają być 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.
Funkcja nie jest widoczna dla użytkownika.
Dostosowywanie
Funkcja nie jest przeznaczona do dostosowywania. Producenci OEM nie powinni modyfikować tej funkcji, w tym wymieniać klawiszy. Wszelkie zmiany w tym systemie mogą w przyszłości spowodować, że AndroidX nie będzie działać prawidłowo 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 dane wyjściowe adb logcat
:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...