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ü dışında işlevsellik güncellemeleri alabilir.
SDK Uzantıları şunlardan sorumludur:
- Cihazın uzantı SDK düzeyine karar verme.
- Uygulamaların uzantı SDK düzeyini sorgulaması için API'ler sağlama.
- (Android 12'den itibaren)
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
veSYSTEMSERVERCLASSPATH
ortam değişkenlerinin değerlerini belirleme.
Modül biçimi
SDK Uzantıları modülü (com.android.sdkext
), APEX biçimindedir ve Android 11 veya sonraki sürümlerin yüklü olduğu cihazlarda kullanılabilir.
Paket biçimi
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 başlatma sürecinde erken çalışan yerel bir ikili dosya. Sistemden ve diğer modüllerden tek tek 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 başlatma sürecinde erken aşamada çalışan ve uzantı SDK'sı (ör.build.version.extensions.r
) ile ilgili sistem özelliklerini ayarlamak için diğer modüllerin meta verilerini okuyan yerel bir ikili dosya.javalib/framework-sdkextension.jar
: Bu dosya, uzantı SDK düzeyini sorgulamak için uygulamalara API'ler sunan bootclasspath'tedir.
Uzantı SDK düzeyini türetme
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ı hakkında ayrıntılı bilgi için protobuf
dosyasını inceleyin.
Uzantı SDK düzeyini okuma
SDK Uzantıları modülü, android.os.ext
paketinde bir SdkExtensions
Java sınıfı 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/
'deki ayrı yapılandırma dosyalarını okuyup birleştirir. Her yapılandırma, classpaths.proto
protobuf mesajını proto ikili biçiminde depolar. Sınıf yolu girişlerinin sırasını belirleyen tam birleştirme algoritması derive_classpath.cpp
bölümünde açıklanmıştır ve zaman içinde değişebilir.