يحدّد وحدة SDK Extensions مستوى حزمة تطوير البرامج (SDK) للإضافات على الجهاز، كما توفّر واجهات برمجة تطبيقات للتطبيقات للاستعلام عن مستوى حزمة تطوير البرامج (SDK) للإضافات. هذه الوحدة قابلة للتحديث، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار Android العادية.
تتولّى "إضافات حزمة تطوير البرامج" المهام التالية:
- تحديد مستوى حزمة تطوير البرامج (SDK) للإضافة على الجهاز
- توفير واجهات برمجة تطبيقات تتيح للتطبيقات طلب مستوى حزمة تطوير البرامج (SDK) للإضافات
- (بدءًا من Android 12) تحديد قيم متغيرات البيئة
BOOTCLASSPATH
وDEX2OATBOOTCLASSPATH
وSYSTEMSERVERCLASSPATH
تنسيق الوحدة
يتوفّر وحدة SDK Extensions (com.android.sdkext
) بتنسيق
APEX للأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث.
تنسيق الحزمة
تتوفّر وحدة 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 للوظائف الإضافية.
اشتقاق مستوى حزمة تطوير البرامج (SDK) للإضافة
يقرأ برنامج derive_sdk
البيانات الوصفية المخزَّنة كملفات protobuf ثنائية في المسار الفرعي etc/sdkinfo.binarypb
داخل كل وحدة APEX. للحصول على تفاصيل حول بنية protobuf، يُرجى الرجوع إلى ملف protobuf
.
قراءة مستوى حزمة تطوير البرامج (SDK) للإضافة
يعرض وحدة SDK Extensions فئة
SdkExtensions
java في حزمة android.os.ext
. استخدِم طريقة getExtensionVersion(int)
لقراءة إصدار أحد إضافات حزمة SDK (على سبيل المثال،
getExtensionVersion(Build.VERSION_CODES.R)
).
استنتاج مسارات الفئات
تقرأ خدمة derive_classpath
ملفات الإعداد الفردية وتدمجها في /system/etc/classpaths/
و/apex/*/etc/classpaths/
. يخزّن كل إعداد رسالة protobuf من classpaths.proto
بتنسيق ثنائي لبروتوكول protobuf. يتم وصف خوارزمية الدمج الدقيقة التي تحدد ترتيب إدخالات مسار الفئة في
derive_classpath.cpp
وقد تتغير بمرور الوقت.