2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
SDK Extensions
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
SDK Extensions モジュールはデバイスの拡張 SDK レベルを決定し、アプリで拡張 SDK レベルを照会するための API を提供します。このモジュールは更新可能です。つまり、通常の Android リリース サイクル外で機能のアップデートを受信できます。
SDK Extensions の役割は次のとおりです。
- デバイスの拡張 SDK レベルを決定する。
- 拡張 SDK レベルをアプリが照会するための API を提供する。
- (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
環境変数を設定します。
bin/derive_sdk
: このネイティブ バイナリは、デバイスの起動プロセスの初期段階で実行され、他のモジュールのメタデータを読み取り、拡張 SDK に関連するシステム プロパティ(例: build.version.extensions.r
)を設定します。
javalib/framework-sdkextension.jar
: このファイルは、bootclasspath にあり、拡張 SDK レベルを照会する API をアプリに公開しています。
拡張 SDK レベルを導出する
derive_sdk
プログラムは、各 APEX モジュール内の etc/sdkinfo.binarypb
サブパスにバイナリ protobuf ファイルとして格納されているメタデータを読み取ります。protobuf 構造の詳細については、protobuf
ファイルをご覧ください。
拡張機能 SDK レベルの読み取り
SDK Extensions モジュールでは、android.os.ext
パッケージの SdkExtensions
Java クラスを公開しています。getExtensionVersion(int)
メソッドを使用して、SDK 拡張機能のバージョン(getExtensionVersion(Build.VERSION_CODES.R)
など)を読み取ります。
クラスパスの導出
derive_classpath
サービスは、/system/etc/classpaths/
と /apex/*/etc/classpaths/
の個々の構成ファイルを読み取り、統合します。各構成には、classpaths.proto
からの protobuf メッセージが proto バイナリ形式で保存されています。クラスパス エントリの順序を決定するマージ アルゴリズムの厳密なものは、derive_classpath.cpp
に記述されています。これは、今後変更される可能性があります。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 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-03-26 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."]]