SDK Uzantıları

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 uzantı SDK seviyesine karar verme.
  • Uzantı SDK düzeyini sorgulamak için uygulamalar için API'ler sağlama.
  • (Android 12'yi Başlatma) BOOTCLASSPATH , DEX2OATBOOTCLASSPATH ve SYSTEMSERVERCLASSPATH ortam değişkenleri için değerleri belirleme.

Modül formatı

SDK Uzantıları modülü ( com.android.sdkext ) APEX biçimindedir ve Android 11 veya sonraki sürümleri ç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 başlayarak) bin/derive_classpath : Aygıt önyükleme işleminin başlarında çalışan yerel bir ikili dosya. Sistemden ve diğer modüllerden bireysel sınıf yolu yapılandırma dosyalarını okur, bunları birleştirir ve CLASSPATH ortam değişkenlerinin tanımını tanımlar.

  • bin/derive_sdk : Aygıt ö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 sunan bootclasspath üzerindedir.

Uzantı SDK düzeyini türet

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ıyla ilgili ayrıntılar için protobuf dosyasına bakın.

Uzantı SDK düzeyini oku

SDK Uzantıları modülü, android.os.ext paketinde bir SdkExtensions Java sınıfını ortaya çıkarır. 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ı türet

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 gelen protobuf mesajını bir proto ikili biçiminde depolar. Sınıf yolu girişlerinin sırasını belirleyen tam birleştirme algoritması derive_classpath.cpp içinde açıklanmıştır ve zamanla değişebilir.