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