Rozszerzenia SDK

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Moduł SDK Extensions decyduje o poziomie SDK rozszerzenia urządzenia i udostępnia interfejsy API dla aplikacji do wysyłania zapytań do poziomu SDK rozszerzenia. Ten moduł można aktualizować, co oznacza, że ​​może otrzymywać aktualizacje funkcji poza normalnym cyklem wydawniczym Androida.

SDK Extensions odpowiada za:

  • Decydowanie o poziomie SDK rozszerzenia urządzenia.
  • Dostarczanie interfejsów API dla aplikacji do wysyłania zapytań na poziomie SDK rozszerzenia.
  • (Uruchamianie systemu Android 12) Określanie wartości zmiennych środowiskowych BOOTCLASSPATH , DEX2OATBOOTCLASSPATH i SYSTEMSERVERCLASSPATH .

Format modułu

Moduł SDK Extensions ( com.android.sdkext ) jest w formacie APEX i jest dostępny dla urządzeń z systemem Android 11 lub nowszym.

Format opakowania

Moduł SDK Extensions ( com.google.android.sdkext ) jest w formacie APEX i zawiera następujące komponenty:

  • (Począwszy od Androida 12) bin/derive_classpath : Natywny plik binarny, który jest uruchamiany na wczesnym etapie procesu uruchamiania urządzenia. Odczytuje poszczególne pliki konfiguracyjne ścieżek klas z systemu i innych modułów, łączy je i definiuje definicję zmiennych środowiskowych CLASSPATH .

  • bin/derive_sdk : natywny plik binarny, który jest uruchamiany na wczesnym etapie procesu rozruchu urządzenia i odczytuje metadane innych modułów w celu ustawienia właściwości systemu związanych z zestawem SDK rozszerzenia (na przykład build.version.extensions.r ).

  • javalib/framework-sdkextension.jar : ten plik znajduje się w ścieżce bootclasspath, która udostępnia interfejsy API aplikacjom w celu wysłania zapytania do poziomu zestawu SDK rozszerzenia.

Pochodny poziom SDK rozszerzenia

Program derive_sdk odczytuje metadane przechowywane jako binarne pliki protobuf w etc/sdkinfo.binarypb sdkinfo.binarypb wewnątrz każdego modułu APEX. Aby uzyskać szczegółowe informacje na temat struktury protobuf, zapoznaj się z plikiem protobuf .

Odczytywanie poziomu SDK rozszerzenia

Moduł SDK Extensions udostępnia klasę java SdkExtensions w pakiecie android.os.ext . Użyj metody getExtensionVersion(int) , aby odczytać wersję rozszerzenia zestawu SDK (na przykład getExtensionVersion(Build.VERSION_CODES.R) ).

Wyprowadzanie ścieżek klas

Usługa derive_classpath odczytuje i scala poszczególne pliki konfiguracyjne w /system/etc/classpaths/ i /apex/*/etc/classpaths/ . Każda konfiguracja przechowuje komunikat protobuf z classpaths.proto w formacie binarnym proto. Dokładny algorytm scalania, który określa kolejność wpisów ścieżki klasy, jest opisany w derive_classpath.cpp i może się zmieniać w czasie.