Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Ekstensi SDK

Modul Ekstensi SDK memutuskan tingkat SDK ekstensi perangkat dan menyediakan API bagi aplikasi untuk menanyakan 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 ekstensi SDK perangkat.
  • Menyediakan API untuk aplikasi untuk mengkueri level SDK ekstensi.
  • (Memulai Android 12) Menentukan nilai untuk variabel lingkungan BOOTCLASSPATH , DEX2OATBOOTCLASSPATH , dan SYSTEMSERVERCLASSPATH .

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

  • bin/derive_sdk : Biner asli yang berjalan di awal proses boot 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 memaparkan API ke aplikasi untuk menanyakan tingkat ekstensi SDK.

Turunkan level 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 .

Baca tingkat 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) ).

Turunkan jalur kelas

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 dalam derive_classpath.cpp dan mungkin berubah seiring waktu.