إضافات حِزم تطوير البرامج (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.

  • 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 بتنسيق ثنائي أولي. يتم وصف خوارزمية الدمج الدقيقة التي تحدّد ترتيب إدخالات مسار الفئة في derive_classpath.cpp وقد تتغيّر بمرور الوقت.