Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Расширения SDK
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Модуль SDK Extensions определяет уровень SDK расширения устройства и предоставляет API для приложений, чтобы запрашивать уровень SDK расширения. Этот модуль является обновляемым, то есть он может получать обновления функциональности вне обычного цикла выпуска Android.
Расширения SDK отвечают за:
- Определение уровня SDK расширения устройства.
- Предоставление API-интерфейсов для приложений для запроса уровня SDK расширения.
- (Начиная с Android 12) Определение значений переменных среды
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
и SYSTEMSERVERCLASSPATH
.
Модуль SDK Extensions ( com.android.sdkext
) имеет формат APEX и доступен для устройств под управлением Android 11 и выше.
Модуль SDK Extensions ( com.google.android.sdkext
) имеет формат APEX и содержит следующие компоненты:
(Начиная с Android 12) bin/derive_classpath
: собственный двоичный файл, который запускается на ранней стадии процесса загрузки устройства. Он считывает отдельные файлы конфигурации classpath из системы и других модулей, объединяет их и определяет определение переменных среды CLASSPATH
.
bin/derive_sdk
: собственный двоичный файл, который запускается на ранней стадии процесса загрузки устройства и считывает метаданные других модулей для установки системных свойств, связанных с расширением SDK (например, build.version.extensions.r
).
javalib/framework-sdkextension.jar
: этот файл находится в bootclasspath, который предоставляет API-интерфейсы приложениям для запроса уровня SDK расширения.
Уровень SDK расширения Drivе
Программа derive_sdk
считывает метаданные, хранящиеся в виде двоичных файлов protobuf в подпути etc/sdkinfo.binarypb
внутри каждого модуля APEX. Подробную информацию о структуре protobuf см. в файле protobuf
.
Уровень SDK расширения чтения
Модуль SDK Extensions предоставляет класс java SdkExtensions
в пакете android.os.ext
. Используйте метод getExtensionVersion(int)
для чтения версии расширения SDK (например, getExtensionVersion(Build.VERSION_CODES.R)
).
Вывести пути к классам
Служба derive_classpath
считывает и объединяет отдельные файлы конфигурации в /system/etc/classpaths/
и /apex/*/etc/classpaths/
. Каждая конфигурация сохраняет сообщение protobuf из classpaths.proto
в двоичном формате proto. Точный алгоритм слияния, который определяет порядок записей classpath, описан в derive_classpath.cpp
и может со временем меняться.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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."]]