اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
إضافات حِزم تطوير البرامج (SDK)
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تحدِّد وحدة "إضافات حِزم تطوير البرامج (SDK)" مستوى حزمة SDK الإضافية للجهاز، وتوفر واجهات برمجة تطبيقات للتطبيقات من أجل الاستعلام عن مستوى حزمة SDK الإضافية. هذه الوحدة قابله
للتحديث، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار
Android العادية.
تتحمّل "إضافات حِزم تطوير البرامج (SDK)" مسؤولية ما يلي:
- تحديد مستوى حزمة تطوير البرامج (SDK) للإضافة على الجهاز
- توفير واجهات برمجة تطبيقات للتطبيقات من أجل الاستعلام عن مستوى حزمة تطوير البرامج (SDK) للإضافة
- (بدءًا من Android 12) تحديد قيم متغيّرات البيئة
BOOTCLASSPATH
وDEX2OATBOOTCLASSPATH
و
SYSTEMSERVERCLASSPATH
وحدة "إضافات حزمة تطوير البرامج (SDK)" (com.android.sdkext
) بتنسيق
APEX وهي متاحة للأجهزة التي تعمل
بنظام التشغيل Android 11 أو إصدار أحدث.
تكون وحدة "إضافات حزمة تطوير البرامج (SDK)" (com.google.android.sdkext
) بتنسيق
APEX وتحتوي
على المكوّنات التالية:
(بدءًا من Android 12) bin/derive_classpath
: ملف ثنائي برمجي أصلي يتم تشغيله في وقت مبكر من عملية التمهيد
للجهاز يقرأ هذا المسار ملفات إعدادات classpath الفردية من النظام
والوحدات الأخرى، ويدمجها، ويحدِّد تعريف CLASSPATH
متغيّرات البيئة.
bin/derive_sdk
: ملف ثنائي أصلي يتم تشغيله في وقت مبكر من عملية تشغيل الجهاز ويقرأ البيانات الوصفية للوحدات الأخرى لضبط خصائص النظام ذات الصلة بحزمة SDK الخاصة بالحماية الإضافية (على سبيل المثال، build.version.extensions.r
).
javalib/framework-sdkextension.jar
: هذا الملف مضمّن في مسار تحميل البرامج الذي
يعرِض واجهات برمجة التطبيقات للتطبيقات من أجل الاستعلام عن مستوى حزمة SDK للإضافة.
اشتقاق مستوى حزمة تطوير البرامج (SDK) للإضافة
يقرأ برنامج derive_sdk
البيانات الوصفية المخزّنة كملفات protobuf ثنائية في المسار الفرعي
etc/sdkinfo.binarypb
داخل كل وحدة APEX. للحصول على تفاصيل حول بنية protobuf، يُرجى الرجوع إلى ملف
protobuf
.
قراءة مستوى حزمة تطوير البرامج (SDK) للإضافات
تعرض وحدة "إضافات حزمة تطوير البرامج (SDK)" فئة 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. يتم وصف خوارزمية الدمج الدقيقة التي تحدّد ترتيب
إدخالات مسار الطباعة في
derive_classpath.cpp
وقد تتغيّر بمرور الوقت.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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."]]