Modul SDK Extensions memutuskan tingkat SDK ekstensi perangkat dan menyediakan API bagi aplikasi untuk mengkueri tingkat SDK ekstensi. Modul ini dapat diperbarui, artinya dapat menerima pembaruan untuk fungsionalitas di luar siklus rilis Android normal.
Ekstensi SDK bertanggung jawab untuk:
- Memutuskan tingkat SDK ekstensi perangkat.
- Menyediakan API untuk aplikasi untuk mengkueri level SDK ekstensi.
- (Memulai Android 12) Menentukan nilai untuk variabel lingkungan
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
, danSYSTEMSERVERCLASSPATH
.
Format modul
Modul SDK Extensions ( com.android.sdkext
) dalam format APEX dan tersedia untuk perangkat yang menjalankan Android 11 atau lebih tinggi.
Format paket
Modul SDK Extensions ( com.google.android.sdkext
) dalam format APEX dan berisi komponen berikut:
(Memulai Android 12)
bin/derive_classpath
: Biner asli yang berjalan di awal proses boot perangkat. Ia membaca file konfigurasi classpath individual dari sistem dan modul lain, menggabungkannya, dan mendefinisikan definisi variabel lingkunganCLASSPATH
.bin/derive_sdk
: Biner asli yang berjalan di awal proses boot perangkat dan membaca metadata modul lain untuk mengatur properti sistem yang terkait dengan SDK ekstensi (misalnya,build.version.extensions.r
).javalib/framework-sdkextension.jar
: File ini berada di bootclasspath yang memaparkan API ke aplikasi untuk menanyakan tingkat ekstensi SDK.
Turunan tingkat SDK ekstensi
Program derive_sdk
membaca metadata yang disimpan sebagai file protobuf biner di subpath etc/sdkinfo.binarypb
di dalam setiap modul APEX. Untuk detail tentang struktur protobuf, lihat file protobuf
.
Membaca level SDK ekstensi
Modul SDK Extensions menampilkan kelas java SdkExtensions
dalam paket android.os.ext
. Gunakan metode getExtensionVersion(int)
untuk membaca versi ekstensi SDK (misalnya, getExtensionVersion(Build.VERSION_CODES.R)
).
Turunan classpath
Layanan derive_classpath
membaca dan menggabungkan file konfigurasi individu di /system/etc/classpaths/
dan /apex/*/etc/classpaths/
. Setiap konfigurasi menyimpan pesan protobuf dari classpaths.proto
dalam format biner proto. Algoritme penggabungan yang tepat yang menentukan urutan entri classpath dijelaskan di derive_classpath.cpp
dan mungkin berubah seiring waktu.