تحدد وحدة ملحقات 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
: هذا الملف موجود في مسار bootclasspath الذي يعرض واجهات برمجة التطبيقات للتطبيقات للاستعلام عن مستوى 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. تم توضيح خوارزمية الدمج الدقيقة التي تحدد ترتيب إدخالات classpath في derive_classpath.cpp
وقد تتغير بمرور الوقت.