إضافات حِزم تطوير البرامج (SDK)

تحدِّد وحدة "إضافات حزمة تطوير البرامج (SDK)" مستوى حزمة SDK الإضافية للجهاز، وتوفر واجهتَي برمجة تطبيقات للتطبيقات من أجل الاستعلام عن مستوى حزمة SDK الإضافية. هذه الوحدة قابله للتحديث، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار Android العادية.

تتحمّل "إضافات حِزم تطوير البرامج (SDK)" مسؤولية ما يلي:

  • تحديد مستوى حزمة تطوير البرامج (SDK) للإضافة على الجهاز
  • توفير واجهات برمجة تطبيقات للتطبيقات من أجل الاستعلام عن مستوى حزمة تطوير البرامج (SDK) للإضافة
  • (بدءًا من Android 12) تحديد قيم متغيّرات البيئة BOOTCLASSPATH وDEX2OATBOOTCLASSPATH و SYSTEMSERVERCLASSPATH

تنسيق الوحدة

وحدة إضافات حزمة تطوير البرامج (SDK) (com.android.sdkext) بتنسيق APEX، وهي متاحة للأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث.

تنسيق الحزمة

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