SDK Uzantıları modülü, cihazın uzantı SDK düzeyine karar verir ve uygulamaların uzantı SDK düzeyini sorgulayabileceği API'ler sağlar. Bu modül güncellenebilir. Yani normal Android sürüm döngüsünün dışında işlevsellik güncellemeleri alabilir.
SDK uzantıları aşağıdakilerden sorumludur:
- Cihazın uzantı SDK düzeyine karar verme.
- Uygulamaların uzantı SDK düzeyini sorgulayabileceği API'ler sağlar.
- (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ın önyükleme işleminin başlarında ç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ın önyükleme işleminin başlarında çalışan ve uzantı SDK'sıyla (ör.build.version.extensions.r
) ilgili sistem özelliklerini ayarlamak için diğer modüllerin meta verilerini okuyan doğal bir ikili dosya.javalib/framework-sdkextension.jar
: Bu dosya, uzantı SDK düzeyini sorgulamak için API'leri uygulamalara sunan önyükleme sınıf yolu üzerindedir.
Uzatma SDK düzeyini türetme
derive_sdk
programı, her APEX modülündeki etc/sdkinfo.binarypb
alt yolunda ikili protobuf dosyası olarak depolanan meta verileri okur. Protobuf yapısıyla ilgili ayrıntılar için protobuf
dosyasına bakın.
Uzantı SDK düzeyinde okuma
SDK Uzantıları modülü, android.os.ext
paketinde bir SdkExtensions
java sınıfı gösterir. 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)
).
Yol adlarını türetme
derive_classpath
hizmeti, /system/etc/classpaths/
ve /apex/*/etc/classpaths/
'deki yapılandırma dosyalarını tek tek okur ve birleştirir. Her yapılandırma, classpaths.proto
kaynaklı protobuf mesajını proto ikili biçiminde depolar. ClassPath 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.