إضافات حزمة تطوير البرامج (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 : هذا الملف موجود في مسار 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 وقد تتغير بمرور الوقت.