Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Ekstensi SDK
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Modul Ekstensi SDK menentukan level SDK ekstensi perangkat dan
menyediakan API bagi aplikasi untuk membuat kueri level SDK ekstensi. Modul ini
dapat diupdate, yang berarti dapat menerima update pada fungsi di luar
siklus rilis Android normal.
Ekstensi SDK bertanggung jawab untuk:
- Menentukan tingkat SDK ekstensi perangkat.
- Menyediakan API bagi aplikasi untuk membuat kueri level SDK ekstensi.
- (Mulai Android 12) Menentukan nilai untuk
variabel lingkungan
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
, dan
SYSTEMSERVERCLASSPATH
.
Modul Ekstensi SDK (com.android.sdkext
) dalam
format APEX dan tersedia untuk perangkat
yang menjalankan Android 11 atau yang lebih tinggi.
Modul SDK Extensions (com.google.android.sdkext
) dalam
format APEX dan
berisi komponen berikut:
(Mulai Android 12) bin/derive_classpath
: biner native yang berjalan lebih awal dalam proses booting
perangkat. Classloader ini membaca setiap file konfigurasi classpath dari sistem dan
modul lain, menggabungkannya, dan menentukan definisi variabel lingkungan
CLASSPATH
.
bin/derive_sdk
: Biner native yang berjalan lebih awal dalam proses booting perangkat
dan membaca metadata modul lain untuk menetapkan 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 tingkat SDK ekstensi.
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 mengetahui detail tentang struktur
protobuf, lihat
file
protobuf
.
Membaca level SDK ekstensi
Modul Ekstensi SDK mengekspos
class java
SdkExtensions
dalam paket android.os.ext
. Gunakan metode getExtensionVersion(int)
untuk membaca versi ekstensi SDK (misalnya,
getExtensionVersion(Build.VERSION_CODES.R)
).
Mendapatkan classpath
Layanan derive_classpath
membaca dan menggabungkan setiap file konfigurasi di
/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 dalam
derive_classpath.cpp
dan dapat berubah dari waktu ke waktu.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# SDK Extensions\n\nThe SDK Extensions module decides the extension SDK level of the device and\nprovides APIs for apps to query the extension SDK level. This module is\nupdatable, meaning it can receive updates to functionality outside of the normal\nAndroid release cycle.\n\nSDK Extensions is responsible for:\n\n- Deciding the extension SDK level of the device.\n- Providing APIs for apps to query the extension SDK level.\n- (Starting Android 12) Determining the values for the `BOOTCLASSPATH`, `DEX2OATBOOTCLASSPATH`, and `SYSTEMSERVERCLASSPATH` environment variables.\n\nModule format\n-------------\n\nThe SDK Extensions module (`com.android.sdkext`) is in\n[APEX](/docs/core/ota/apex) format and is available for devices\nrunning Android 11 or higher.\n\nPackage format\n--------------\n\nThe SDK Extensions module (`com.google.android.sdkext`) is in\n[APEX](/devices/tech/ota/apex) format and\ncontains the following components:\n\n- (Starting Android 12) `bin/derive_classpath`: A\n native binary that runs early in the device boot\n process. It reads individual classpath configs files from the system and\n other modules, merges them, and defines the definition of `CLASSPATH`\n environment variables.\n\n- `bin/derive_sdk`: A native binary that runs early in the device boot process\n and reads metadata of other modules to set system properties related to the\n extension SDK (for example, `build.version.extensions.r`).\n\n- `javalib/framework-sdkextension.jar`: This file is on the bootclasspath that\n exposes APIs to apps to query the extension SDK level.\n\nDerive extension SDK level\n--------------------------\n\nThe `derive_sdk` program reads metadata stored as binary protobuf files in the\n`etc/sdkinfo.binarypb` subpath inside each APEX module. For details on protobuf\nstructure, refer to the\n[`protobuf`](https://android.googlesource.com/platform/external/protobuf.git)\nfile.\n\nRead extension SDK level\n------------------------\n\nThe SDK Extensions module exposes an\n[`SdkExtensions`](https://android.googlesource.com/platform/packages/modules/SdkExtensions/)\njava class in the `android.os.ext` package. Use the `getExtensionVersion(int)`\nmethod to read the version of an SDK extension (for example,\n`getExtensionVersion(Build.VERSION_CODES.R)`).\n\nDerive classpaths\n-----------------\n\nThe `derive_classpath` service reads and merges individual config files in\n`/system/etc/classpaths/` and `/apex/*/etc/classpaths/`. Each config stores\nprotobuf message from [`classpaths.proto`](https://android.googlesource.com/platform/packages/modules/common/+/android16-release/proto/classpaths.proto)\nin a proto binary format. The exact merging algorithm that determines the order\nof the classpath entries is described in\n[`derive_classpath.cpp`](https://android.googlesource.com/platform/packages/modules/SdkExtensions/+/android16-release/derive_classpath/derive_classpath.cpp)\nand might change over time."]]