SDK Uzantıları modülü, cihazın uzantı SDK düzeyine karar verir ve uygulamaların uzantı SDK düzeyini sorgulaması için API'ler sağlar. Bu modül güncellenebilir, yani normal Android sürüm döngüsünün dışındaki işlevsellik güncellemelerini alabilir.
SDK Uzantıları şunlardan sorumludur:
- Cihazın genişletme SDK düzeyine karar verilmesi.
- Uzantı SDK düzeyini sorgulamak için uygulamalara API'ler sağlama.
- (Android 12'den başlayarak)
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
veSYSTEMSERVERCLASSPATH
ortam değişkenlerinin değerlerini belirleme.
Modül formatı
SDK Uzantıları modülü ( com.android.sdkext
) APEX biçimindedir ve Android 11 veya üstünü çalıştıran cihazlarda kullanılabilir.
Paket formatı
SDK Uzantıları modülü ( com.google.android.sdkext
) APEX biçimindedir ve aşağıdaki bileşenleri içerir:
(Android 12'den itibaren)
bin/derive_classpath
: Cihaz önyükleme işleminin başlarında çalışan yerel bir ikili dosya. Sistemdeki ve diğer modüllerdeki bireysel sınıf yolu yapılandırma dosyalarını okur, bunları birleştirir veCLASSPATH
ortam değişkenlerinin tanımını tanımlar.bin/derive_sdk
: Cihaz önyükleme işleminin başlarında çalışan ve SDK uzantısıyla ilgili sistem özelliklerini ayarlamak için diğer modüllerin meta verilerini okuyan yerel bir ikili dosya (örneğin,build.version.extensions.r
).javalib/framework-sdkextension.jar
: Bu dosya, uzantı SDK düzeyini sorgulamak için API'leri uygulamalara gösteren önyükleme sınıfı yolundadır.
Uzantı SDK düzeyi türetiliyor
derive_sdk
programı, her APEX modülünün içindeki etc/sdkinfo.binarypb
alt yolunda ikili protobuf dosyaları olarak depolanan meta verileri okur. Protobuf yapısına ilişkin ayrıntılar için protobuf
dosyasına bakın.
Uzantı SDK düzeyi okunuyor
SDK Uzantıları modülü, android.os.ext
paketinde bir SdkExtensions
Java sınıfını kullanıma sunar. Bir SDK uzantısının sürümünü okumak için getExtensionVersion(int)
yöntemini kullanın (örneğin, getExtensionVersion(Build.VERSION_CODES.R)
).
Sınıf yollarını türetme
derive_classpath
hizmeti /system/etc/classpaths/
ve /apex/*/etc/classpaths/
içindeki bireysel yapılandırma dosyalarını okur ve birleştirir. Her yapılandırma, classpaths.proto
protobuf mesajını bir proto ikili biçiminde saklar. Sınıf yolu girişlerinin sırasını belirleyen tam birleştirme algoritması derive_classpath.cpp
dosyasında açıklanmıştır ve zaman içinde değişebilir.