إضافات VNDK

تغير الشركات المصنعة لأجهزة Android رمز مصدر مكتبات AOSP لأسباب مختلفة. يعيد بعض الموردين تنفيذ الدوال في مكتبات AOSP من أجل تعزيز الأداء بينما يضيف الموردون الآخرون عناصر الجذب جديدة أو واجهات برمجة تطبيقات جديدة أو بوظائف مكتبات AOSP. يقدم هذا القسم إرشادات توسيع مكتبات AOSP بطريقة لا تعطّل CTS/VTS.

استبدال التسليم والاستلام في مركز الصيانة

ويجب أن تكون جميع المكتبات المشتركة المعدَّلة متوافقة مع النظام الثنائي. الاستبدال الفوري لنظيره من "الشريك المعتمد على Google (AOSP)". كل العناصر الحالية يجب أن يتمكن مستخدمو AOSP من استخدام المكتبة المشتركة المعدلة بدون لإعادة التجميعات. يشير هذا الشرط إلى ما يلي:

  • يجب عدم إزالة دوال AOSP.
  • عدم تغيير الهياكل إذا تعرضت هذه الهياكل إلى المستخدمين.
  • يجب ألا يتم تقوية الشرط المسبق للدوال.
  • يجب أن توفر الدوال وظائف مماثلة.
  • يجب عدم إضعاف الشرط اللاحق للدوال.

تصنيفات الوحدات الموسّعة

تصنيف الوحدات حسب الوظائف التي يتم تحديدها الاستخدام.

ملاحظة: يتم استخدام الوظائف هنا. بدلاً من واجهة برمجة التطبيقات/واجهة ABI لأنه من الممكن إضافة وظائف بدون تغيير أي واجهة برمجة تطبيقات أو واجهة تطبيق ثنائية (ABI).

اعتمادًا على الوظائف المحددة في الوحدة، يمكن استخدام الوحدات مصنفة إلى DA-Module وDX-Module:

  • تحديد وحدات AOSP فقط (DA-Module) لا تعرّف عناصر جديدة وظيفية لم تكن في نظير AOSP.
    • المثال 1. وتُعد مكتبة AOSP السليمة غير المعدلة وحدة تحليل البيانات.
    • المثال 2. إذا أعاد البائع كتابة الدوال في libcrypto.so مع تعليمات شريحة SIM (بدون إضافة شريحة SIM جديدة) )، فستكون libcrypto.so المعدَّلة وحدة DA.
  • تحديد وحدات الإضافات (DX-Module) إمّا أن تعرِّف قيمًا جديدة بوظائفها أو ليس لها نظير AOSP.
    • المثال 1. إذا أضاف البائع دالة مساعدة إلى libjpeg.so للوصول إلى بعض البيانات الداخلية، ثم تم تعديل ستكون الدالة libjpeg.so بتنسيق DX-Lib وستكون الدالة المضافة حديثًا الجزء الموسع من المكتبة.
    • المثال 2. إذا حدد المورّد مكتبة غير تابعة لـ AOSP باسم libfoo.so، بعد ذلك سيتم عرض libfoo.so على شكل DX-Lib.

اعتمادًا على الوظائف التي تستخدمها الوحدة، يمكن تصنيف الوحدات في وحدة UA ووحدة تجربة المستخدم.

  • تستخدم وحدات AOSP التي تستخدم فقط (وحدة UA) وظائف AOSP فقط. في طريقة تنفيذها. وهي لا تعتمد على أي إضافات لا تتوافق مع بروتوكول AOSP.
    • المثال 1. مكتبة AOSP السليمة غير المعدلة هي UA.
    • المثال 2. إذا تم تعديل المكتبة المشتركة libjpeg.so على واجهات برمجة تطبيقات AOSP أخرى، فستكون وحدة UA.
  • تعتمد وحدات استخدام الإضافات (وحدة تجربة المستخدم) على بعض التنسيقات التي لا تتوافق مع بروتوكول AOSP. والوظائف في تنفيذها.
    • المثال 1. إذا كانت قيمة libjpeg.so المعدَّلة تعتمد على مكتبة أخرى غير تابعة لـ AOSP باسم libjpeg_turbo2.so، ثم سيتم تعديل libjpeg.so وحدة تجربة مستخدم.
    • المثال 2. إذا أضاف البائع دالة جديدة إلى يستخدم libexif.so وlibjpeg.so المعدّل الدالة المضافة حديثًا من libexif.so، ثم تم تعديلها ستكون libjpeg.so وحدة تجربة مستخدم.

التعريفات والاستخدامات مستقلة عن بعضها البعض:

الوظائف المستخدَمة
AOSP فقط (UA) موسّعة (UX)
الوظائف المحددة AOSP (DA) فقط داوا مفتاح DAUX
موسّعة (DX) DXUA تجربة DXUX

آلية إضافة VNDK

لن تعمل وحدات المورّدين التي تعتمد على وظائف موسّعة بسبب لا تتوفّر الوظائف الموسّعة في مكتبة AOSP التي تحمل الاسم نفسه. في حال حذف وحدات البائعين بشكل مباشر أو غير مباشر على الوظائف الموسعة، يجب على البائعين نسخ المكتبات المشتركة DAUX وDXUA وDXUX إلى البائع (تبحث عمليات المورد دائمًا عن المكتبات المشتركة في القسم أولاً). ومع ذلك، يجب عدم نسخ مكتبات LL-NDK، وبالتالي يجب على أن الوحدات لا تعتمد على الوظائف الإضافية المحددة بواسطة مكتبات LL-NDK.

يمكن أن تظل مكتبات DAUA المشتركة في قسم النظام إذا يمكن أن توفر مكتبة AOSP المقابلة نفس الوظائف تستمر الوحدات في العمل عند استبدال قسم النظام بوحدة تخزين صورة النظام (GSI)

يعد الاستبدال المنفصل أمرًا مهمًا لأن مكتبات VNDK غير المعدلة في سوف يرتبط GSI بالمكتبات المشتركة المعدلة عند تضارب الأسماء. إذا كانت يتم تعديل مكتبات AOSP بطريقة غير متوافقة مع واجهة برمجة التطبيقات (API)/واجهة ABI، وبروتوكول AOSP المكتبات في GSI من عدم الربط أو ينتج عنها سلوكيات غير محددة.