يمكن استخدام لقطات VNDK بواسطة صورة نظام لتوفير ملف VNDK الصحيح المكتبات إلى صور البائعين حتى عندما يتم إنشاء صور النظام والبائع من بإصدارات مختلفة من Android. يتطلب إنشاء لقطة VNDK التقاط مكتبات VNDK كلقطة ووضع علامة عليها برقم إصدار. تشير رسالة الأشكال البيانية صورة البائع بإصدار محدد من VNDK يوفر واجهات ABI المطلوبة للوحدات في صورة البائع. ومع ذلك، ضمن نفس إصدار VNDK، ينبغي أن تكون مكتبات VNDK استقرار واجهة التطبيق الثنائية (ABI):
يتضمن تصميم لقطة VNDK طرقًا إن إنشاء إنشاء لقطة VNDK مسبقًا من صورة النظام الحالية تثبيت هذه الملفات المصممة مسبقًا إلى قسم النظام في إصدار Android أحدث.
لمحة عن مكتبات VNDK
HIDL-HALs، وهي مقدّمة في يوفِّر الإصدار Android 8.0 ترقيات منفصلة لأقسام النظام والمورِّدين. الدونغ الفيتنامي (VNDK) تحدد مجموعات المكتبات (VNDK-core وVNDK-SP وLL-NDK) التي يمكن لرمز البائع الربط مع البائعين ومنعهم من استخدام المكتبات غير التابعة لـ VNDK تعيين. ونتيجة لذلك، يمكن إنشاء صورة البائع وتشغيلها إذا كان تنسيق VNDK مناسبًا يتم تقديم المجموعات على صورة النظام إلى صورة البائع.
نواة VNDK
يتم تثبيت مجموعة مكتبات VNDK الأساسية في
/system/lib[64]/vndk-${VER}
ومتاح
فقط لعمليات المورد ذات مستوى واجهة برمجة التطبيقات الذي يساوي
${VER}
لا يجوز أن تستخدم عمليات النظام هذه المكتبات ويجب
يمكنك بدلاً من ذلك استخدام المكتبات المثبَّتة في /system/lib[64]
. لأنّ
التقييد الصارم في مساحة الاسم لكل عملية، مكتبات VNDK الأساسية
آمنة من التحميل المزدوج.
لتضمين مكتبة في VNDK-core، أضف ما يلي إلى
Android.bp
:
vendor_available: true, vndk: { enabled: true, },
حزمة تطوير برامج (VNDK-SP)
تم تثبيت مكتبات VNDK-SP في /system/lib[64]/vndk-sp-${VER}
.
وهي متاحة لعمليات البائعين وعمليات النظام (من خلال SP-HAL)
والمكتبات المثبتة في قسم البائع). قد تتم إعادة تخزين مكتبات VNDK-SP
تحميل مزدوج.
لتضمين مكتبة في VNDK-SP، أضِف ما يلي إلى Android.bp
:
vendor_available: true, vndk: { enabled: true, support_system_process: true, },
LL-NDK
تم تثبيت مكتبات LL-NDK في /system/lib[64]
. وحدات المورّدين
استخدام مكتبات التمثيل الموجز LL-NDK للوصول إلى رموز LL-NDK المحددة مسبقًا
المكتبات. يجب أن تكون مكتبات LL-NDK متوافقة مع الإصدارات القديمة ومستقرة على واجهة ABI
تمكين الإصدارات القديمة من وحدات الموردين من استخدام إصدارات جديدة من مكتبات LL-NDK.
نظرًا لخصائص ABI المستقرة لـ LL-NDK، فإن لقطة VNDK لا
لا يلزم تضمين مكتبات LL-NDK لصور البائعين القديمة.
حول لقطات VNDK
الإصدار Android 8.1 مضمّن مع VNDK المكتبات التي تم إنشاؤها من رمز المصدر ومع ذلك، بالنسبة للإصدارات الأحدث من على Android، يجب التقاط كل إصدار من إصدارات VNDK كلقطة وتقديمها والإنشاء المسبق لتمكين الارتباط بصورة أقدم للبائع.
بدءًا من الإصدار 9 من نظام Android، ستشمل الإصدارات الجديدة
تضمين لقطة واحدة على الأقل لأدلة VNDK-core وVNDK-SP للأدلة القديمة
في رمز مصدر Android. وفي وقت الإصدار، ستكون اللقطات المطلوبة
تم التثبيت على /system/lib[64]/vndk-${VER}
و
/system/lib[64]/vndk-sp-${VER}
(الأدلة التي يمكن استخدامها بواسطة
قسم البائع)، حيث أن ${VER}
هو متغير السلسلة الذي
اسم إصدار لقطة VNDK.
ونظرًا لأن مكتبات لقطات VNDK قد تختلف باختلاف إصدار VNDK، فإن ملف VNDK
تتضمن أيضًا تكوينات مساحة اسم الرابط، والتي تم تثبيتها
etc/ld.config.${VER}.txt
,
/etc/llndk.libraries.${VER}.txt
و
/etc/vndksp.libraries.${VER}.txt
مثال: نظام الترقية والمورّد الصور
لا يلزم تقديم لقطات، الإصدار بدون تهيئات إضافية لـ VNDK لقطات.
مثال: ترقية صورة النظام فقط
يجب أن يتضمن لقطة VNDK وملفات تهيئة مساحة اسم الرابط
صورة البائع في صورة النظام. ملفات إعداد مساحة اسم الرابط
يتم تكوينها تلقائيًا للبحث عن مكتبات VNDK في
/system/lib[64]/vndk-${VER}
و
/system/lib[64]/vndk-sp-${VER}
مثال: ترقية صورة النظام، تغيير بسيط في صورة المورّد
لم يتم حتى الآن دعم إنشاء صورة بائع مقابل لقطة VNDK، لذلك إنشاء صورة المورد بشكل منفصل باستخدام رمز المصدر الأصلي، عندئذ ترقية صورة النظام كما هو موضح في المثال السابق.
بنية لقطة VNDK
لجعل صورة نظام Android 9 متوافقة مع صورة بائع Android 8.1، ولقطة VNDK التي تتطابق مع الإصدار Android 8.1 يجب تقديم صورة المورّد مع الإصدار 9 من نظام Android صورة النظام، كما هو موضح أدناه:
يتضمن تصميم لقطة VNDK الطرق التالية:
- إنشاء لقطة لمحورَي VNDK وVNDK-SP
المكتبات. يتضمّن Android 9 نصًا
يمكنك استخدامها لإنشاء لقطة من إصدار VNDK الحالي. يجمع هذا النص البرمجي الكل
المكتبات في
/system/lib[64]/vndk-28
/system/lib[64]/vndk-sp-28
التي تم بناؤها باستخدام المصدر باعتباره لقطة VNDK، حيث أن28
هو إصدار VNDK من الإصدار 9 من نظام التشغيل Android تتضمّن اللقطة أيضًا الرابط ملفي إعداد مساحة الاسم/etc/ld.config.28.txt
،/etc/llndk.libraries.28.txt
و/etc/vndksp.libraries.28.txt
سيتم استخدام اللقطة التي تم إنشاؤها. التي تستخدم إصدارات أحدث من Android (أعلى من إصدار Android 9). - يمكن تثبيت مكتبات VNDK-core وVNDK-SP المصممة مسبقًا من
نبذة عني. وفي نظام التشغيل Android 9، تحتوي لقطة VNDK على
مجموعة من مكتبات VNDK الأساسية المصممة مسبقًا ومجموعة من مكتبات VNDK-SP بالإضافة إلى
كملفات تهيئة مساحة اسم الرابط. عندما تقوم بتقديم قائمة VNDK
التي سيتم تثبيتها، في وقت الإنشاء، يتم تثبيت صورة النظام
مكتبات لقطات VNDK إلى
/system/lib[64]/vndk-${VER}
الدلائل والرابط/system/lib[64]/vndk-sp-${VER}
ملفات تهيئة مساحة الاسم للقطات VNDK هذه إلى دليل/etc
.
إنشاء نُسخ من VNDK
يحتوي كل إصدار من Android على لقطة VNDK واحدة ويتم استخدام إصدار حزمة SDK
إصدار VNDK (مما يعني أن إصدار VNDK له عدد صحيح، مثل 27
الإصدار 8.1 من نظام Android). يتم إصلاح إصدار VNDK عندما يكون إصدار Android
صدرت. يتم تخزين إصدار VNDK الذي يستخدمه قسم البائع
تلقائيًا في السمة ro.vndk.version
، وبالتالي يمكن قراءتها
في وقت التشغيل يتم بعد ذلك استخدام هذا الإصدار لتحديد إصدار VNDK الخاص بالمورّد
لبعض المكتبات وتحديد إصدار لقطة VNDK لمساحات الاسم
التكوين.
إنشاء مكتبات VNDK
ينشئ الأمر make vndk
مكتبات تتضمّن vndk:
{ enabled: true, … }
، بما في ذلك التبعيات ومساحة الاسم.
ملفات التهيئة. إذا تم ضبط BOARD_VNDK_VERSION := current
،
يتم إنشاء هذه المكتبات باستخدام الأمر make
.
ولأن هذا الإصدار لا يثبت مكتبات VNDK من اللقطة، مكتبات VNDK المثبتة غير مستقرة على واجهة التطبيق الثنائية (ABI). ومع ذلك، عند وجود إصدار Android يتم إصلاح واجهة التطبيق الثنائية (ABI) لإصدار VNDK الحالي. في هذه المرحلة، تعطُّل واجهة التطبيق الثنائية (ABI) هو خطأ في الإصدار، لذا يجب ألّا يتم تطبيق رموز تصحيح على إصدار Android. تغيير واجهة التطبيق الثنائية (ABI) لمكتبات VNDK.