Ekstensi SDK

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 lingkungan SYSTEMSERVERCLASSPATH.

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 definisi CLASSPATH 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.