Modul Ekstensi SDK menentukan level SDK ekstensi perangkat dan menyediakan API bagi aplikasi untuk membuat kueri level SDK ekstensi. Modul ini bersifat dapat diperbarui, artinya dapat menerima pembaruan untuk fungsionalitas di luar normal Siklus rilis Android.
Ekstensi SDK bertanggung jawab untuk:
- Menentukan level SDK ekstensi perangkat.
- Menyediakan API bagi aplikasi untuk membuat kueri level SDK ekstensi.
- (Memulai Android 12) Menentukan nilai untuk
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
, dan Variabel lingkunganSYSTEMSERVERCLASSPATH
.
Format modul
Modul Ekstensi SDK (com.android.sdkext
) sudah tersedia
APEX dan tersedia untuk perangkat
menjalankan Android 11 atau yang lebih tinggi.
Format paket
Modul Ekstensi SDK (com.google.android.sdkext
) sudah tersedia
format APEX dan
berisi komponen berikut:
(Memulai Android 12)
bin/derive_classpath
: A biner native yang berjalan lebih awal saat booting perangkat {i>checkout<i}. Class ini membaca file konfigurasi classpath individual dari sistem dan modul lain, menggabungkannya, dan menentukan definisiCLASSPATH
variabel lingkungan.bin/derive_sdk
: Biner native yang berjalan di awal proses booting perangkat dan membaca metadata modul lain untuk menyetel properti sistem yang terkait dengan SDK ekstensi (misalnya,build.version.extensions.r
).javalib/framework-sdkextension.jar
: File ini berada di bootclasspath yang mengekspos API ke aplikasi untuk membuat kueri level SDK ekstensi.
Memperoleh level SDK ekstensi
Program derive_sdk
membaca metadata yang disimpan sebagai file protobuf biner di
etc/sdkinfo.binarypb
subjalur di dalam setiap modul APEX. Untuk mengetahui detail tentang protobuf
lihat struktur
protobuf
.
Level SDK ekstensi baca
Modul Ekstensi SDK mengekspos
SdkExtensions
java dalam paket android.os.ext
. Menggunakan getExtensionVersion(int)
untuk membaca versi ekstensi SDK (misalnya,
getExtensionVersion(Build.VERSION_CODES.R)
).
Menurunkan classpath
Layanan derive_classpath
membaca dan menggabungkan setiap file konfigurasi dalam
/system/etc/classpaths/
dan /apex/*/etc/classpaths/
. Setiap konfigurasi menyimpan
pesan protobuf dari classpaths.proto
dalam format biner proto. Algoritma penggabungan yang tepat yang menentukan urutan
entri classpath dijelaskan di
derive_classpath.cpp
dan mungkin berubah
dari waktu ke waktu.