Moduł rozszerzeń pakietu SDK określa poziom rozszerzenia pakietu SDK na urządzeniu i udostępnia interfejsy API, za pomocą których aplikacje mogą wysyłać zapytania o poziom rozszerzenia pakietu SDK. Ten moduł można aktualizować, co oznacza, że może on otrzymywać aktualizacje funkcji poza normalnym cyklem wydawania Androida.
Moduł rozszerzeń pakietu SDK odpowiada za:
- określanie poziomu rozszerzenia pakietu SDK na urządzeniu;
- udostępnianie interfejsów API, za pomocą których aplikacje mogą wysyłać zapytania o poziom rozszerzenia pakietu SDK;
- (od Androida 12) określanie wartości zmiennych środowiskowych
BOOTCLASSPATH,DEX2OATBOOTCLASSPATH, iSYSTEMSERVERCLASSPATH.
Format modułu
Moduł rozszerzeń pakietu SDK (com.android.sdkext) jest w
formacie APEX i jest dostępny na urządzeniach
z Androidem 11 lub nowszym.
Format pakietu
Moduł rozszerzeń pakietu SDK (com.google.android.sdkext) jest w
formacie APEX i
zawiera te komponenty:
(od Androida 12)
bin/derive_classpath: natywny plik binarny, który jest uruchamiany na wczesnym etapie procesu uruchamiania urządzenia. Odczytuje on poszczególne pliki konfiguracyjne ścieżki klas z systemu i innych modułów, łączy je i definiuje definicję zmiennych środowiskowychCLASSPATH.bin/derive_sdk: natywny plik binarny, który jest uruchamiany na wczesnym etapie procesu uruchamiania urządzenia i odczytuje metadane innych modułów, aby ustawić właściwości systemu związane z rozszerzeniem pakietu SDK (np.build.version.extensions.r).javalib/framework-sdkextension.jar: ten plik znajduje się w ścieżce klas uruchamiania i udostępnia interfejsy API, za pomocą których aplikacje mogą wysyłać zapytania o poziom rozszerzenia pakietu SDK.
Pobieranie poziomu rozszerzenia pakietu SDK
Program derive_sdk odczytuje metadane przechowywane jako binarne pliki protobuf w podścieżce etc/sdkinfo.binarypb w każdym module APEX. Szczegółowe informacje o strukturze protobuf
znajdziesz w
protobuf
pliku.
Odczytywanie poziomu rozszerzenia pakietu SDK
Moduł rozszerzeń pakietu SDK udostępnia klasę Java
SdkExtensions
w pakiecie android.os.ext. Aby odczytać wersję rozszerzenia pakietu SDK, użyj metody getExtensionVersion(int) (np. getExtensionVersion(Build.VERSION_CODES.R)).
Pobieranie ścieżek klas
Usługa derive_classpath odczytuje i łączy poszczególne pliki konfiguracyjne w folderach /system/etc/classpaths/ i /apex/*/etc/classpaths/. Każda konfiguracja przechowuje
komunikat protobuf z classpaths.proto
w binarnym formacie proto. Dokładny algorytm łączenia, który określa kolejność
wpisów ścieżki klas, jest opisany w
derive_classpath.cpp
i może się z czasem zmienić.