SDK Uzantıları

SDK Uzantılar modülü, cihazın uzantı SDK düzeyini belirler ve uygulamaların uzantı SDK düzeyini sorgulamaları için 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ı şunlardan 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 ve SYSTEMSERVERCLASSPATH 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ümleri çalıştıran 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 ve CLASSPATHortam değişkenlerinin tanımını tanımlar.

  • bin/derive_sdk: Cihaz başlatma işleminin başlarında çalışan ve uzantı SDK'sı (örneğin, build.version.extensions.r) ile ilgili sistem özelliklerini ayarlamak için diğer modüllerin meta verilerini okuyan yerel bir ikili programdır.

  • javalib/framework-sdkextension.jar: Bu dosya, uzantı SDK düzeyini sorgulamak için API'leri uygulamalara sunan bootclasspath'tedir.

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 seviyesi 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)).

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.