مستوى واجهة برمجة التطبيقات لدى المورّد

يشير مستوى واجهة برمجة التطبيقات الخاصة بالمورّد إلى إصدار الواجهة الذي يتيحه قسم المورّد. الواجهة ثنائية الاتجاه، فهي تصف واجهة برمجة التطبيقات التي يقدّمها قسم المورّد لقسم النظام (طبقة تجريد الأجهزة أو واجهة برمجة التطبيقات HAL)، وأيضًا واجهة برمجة التطبيقات التي يطلبها قسم المورّد من قسم النظام (واجهة برمجة التطبيقات LLNDK أو حزمة تطوير البرامج الأصلية المنخفضة المستوى).

يُستخدم أيضًا مستوى واجهة برمجة التطبيقات الخاصة بالمورّد لتحديد متطلبات برامج المورّد (VSR)، وهي مجموعة من المتطلبات الوظيفية وغير الوظيفية التي يجب أن يستوفيها البرنامج في قسم المورّد.

يوضّح الجزء المتبقي من هذه الصفحة كيفية استخدام خصائص النظام، استنادًا إلى إصدار Android، لتحديد مستوى واجهة برمجة التطبيقات الخاصة بالمورّد.

تجميد واجهة برمجة التطبيقات الخاصة بالمورّد

يسمح Android للمورّد بتجميد قسم المورّد في إصدار معيّن من متطلبات برامج المورّد. يتم تحديد مجموعة الميزات التي يتوقعها Android من قسم المورّد من خلال مستوى واجهة برمجة التطبيقات الخاصة بالمورّد المرتبط بقسم المورّد. في وقت التشغيل، يتم تعديل سلوك البرنامج الذي يتم تشغيله في قسم النظام لاستيعاب مستوى واجهة برمجة التطبيقات الخاصة بقسم المورّد. على سبيل المثال، قد لا يستخدم البرنامج في قسم النظام ميزات جديدة إذا لم يكن مستوى واجهة برمجة التطبيقات الخاصة بقسم المورّد يتيحها.

لا يتوفّر تجميد واجهة برمجة التطبيقات الخاصة بالمورّد إلا إذا كنت تنشئ جهازًا متوافقًا مع Android.

تحديد مستوى واجهة برمجة التطبيقات الخاصة بالمورّد (الإصدار Android 14-QPR3 والإصدارات الأحدث)

بالنسبة إلى الإصدار Android 14-QPR3 والإصدارات الأحدث، يتم إصدار مستوى واجهة برمجة التطبيقات الخاصة بالمورّد بشكل منفصل، ما يعني أنّ مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK ومستوى واجهة برمجة التطبيقات الخاصة بالمورّد غير متزامنين.

بسبب جداول الإصدار المنفصلة، بالنسبة إلى الإصدار Android 14-QPR3 والإصدارات الأحدث، يتم فصل مستوى واجهة برمجة التطبيقات الخاصة بالمورّد تمامًا عن مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK. لضمان وضوح هذا الفصل، يكون تنسيق مستوى واجهة برمجة التطبيقات الخاصة بالمورّد هو التاريخ المنسّق على النحو YYYYMM (السنة والشهر)، بينما يكون مستوى حزمة SDK عددًا صحيحًا.

يحتوي الإصدار Android 14-QPR3 والإصدارات الأحدث على خصائص النظام التالية المتعلقة بمستوى واجهة برمجة التطبيقات الخاصة بالمورّد:

خاصية النظام التنسيق الوصف الإعداد الأولي
ro.board.api_level YYYYMM مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي يتيحه برنامج مجموعة الشرائح. يتم ضبط هذه الخاصية لجميع مجموعات الشرائح. يتم ضبط هذه الخاصية تلقائيًا من خلال نظام التصميم.
ro.board.first_api_level YYYYMM مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي تم إصدار برنامج مجموعة الشرائح به لأول مرة. تعتمد هذه الخاصية على مجموعة الشرائح فقط ويضبطها مورّدو نظام على شريحة (SoC) إذا كانت مجموعة شرائح نظام على شريحة مؤهلة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد. بعد الإعداد الأولي، يجب اعتبار هذه الخاصية نهائية وعدم تعديلها. على الرغم من أنّنا لا ننصح بذلك بشدة، قد يُسمح بإجراء تحديث في حالات نادرة واستثنائية باستخدام مؤهلات جديدة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد. يضبط مورّدو نظام على شريحة هذا الإعداد باستخدام BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level عدد صحيح مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK الذي يتم إطلاق الجهاز به في البداية. يضبط المصنّع الأصلي للجهاز هذه الخاصية ثم لا يتم تعديلها مطلقًا، حتى بعد ترقيات نظام التشغيل.
ro.vendor.api_level YYYYMM مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي يتوافق مع ro.product.first_api_level. نضبط ro.vendor.api_level على قيمة ro.board.api_level عندما تكون ro.board.api_level أقل من مستوى واجهة برمجة التطبيقات الخاصة بالمورّد في ro.product.first_api_level فقط إذا كانت مجموعة شرائح نظام على شريحة مؤهلة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد. موضّح بعد هذا الجدول
ro.board.api_frozen قيمة منطقية يتم ضبط هذه الخاصية على true إذا تم الانتهاء من مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي تمثله ro.board.api_level. إذا لم يتم ضبط هذه الخاصية، يتم ضبطها تلقائيًا على false.
ro.llndk.api_level YYYYMM مستوى واجهة برمجة التطبيقات الخاصة بالمورّد بتنسيق YYYYMM الذي يقدّمه الإصدار الحالي من LLNDK في قسم النظام. تتوافق واجهة برمجة التطبيقات LLNDK مع الإصدارات السابقة، لذا يمكن تثبيت أي صورة مورّد أقل من مستوى واجهة برمجة التطبيقات هذا أو مساوٍ له باستخدام صورة النظام هذه. يتم ضبط هذه الخاصية في قسم النظام.

يتم اشتقاق الخاصية ro.vendor.api_level بإحدى الطريقتَين التاليتَين:

  • إذا كانت مجموعة الشرائح مؤهلة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • إذا لم تكن مجموعة الشرائح خاضعة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

تحدّد الطريقة AVendorSupport_getVendorApiLevelOf() مستوى واجهة برمجة التطبيقات الخاصة بالمورّد المقابل من مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK. على سبيل المثال AVendorSupport_getVendorApiLevelOf(35)، حيث 35 هو مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK للإص101}دار الرئيسي من Android في عام 2024، يعرض 202404، وهو التاريخ التقريبي للإص101}دار Android 14-QPR3 عندما تم ضبط مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الحالي.

تحديد مستوى واجهة برمجة التطبيقات الخاصة بالمورّد (الإصدار Android 13)

يتّبع مستوى واجهة برمجة التطبيقات الخاص بالمورّد مستوى واجهة برمجة التطبيقات الخاص بحزمة تطوير البرامج (SDK)، وهو مخصّص لواجهة برمجة التطبيقات الخاصة بالتطبيق ونظام التشغيل ويتم تعديله مرة واحدة في السنة عند إصدار نظام Android الأساسي الجديد في مشروع Android المفتوح المصدر (AOSP).

يحتوي الإصدار Android 13 على خصائص النظام التالية المتعلقة بمستوى واجهة برمجة التطبيقات الخاصة بالمورّد:

خاصية النظام التنسيق الوصف الإعداد الأولي
ro.board.first_api_level عدد صحيح مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي تم إصدار برنامج مجموعة الشرائح به لأول مرة. تعتمد هذه الخاصية على شريحة التعريف فقط، ولا يمكن لمورّدي منظومة على رقاقة أو المصنّعين الأصليين للجهاز تعديلها. يتم ضبط هذه الخاصية فقط لمجموعات الشرائح المؤهلة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد. يتم تحديد القيمة من خلال ضبط BOARD_SHIPPING_API_LEVEL في ملف device.mk.
ro.board.api_level عدد صحيح مستوى واجهة برمجة التطبيقات الخاصة بالمورّد الذي يتيحه برنامج مجموعة الشرائح. يتم ضبط هذه الخاصية فقط لمجموعات الشرائح المؤهلة لتجميد واجهة برمجة التطبيقات الخاصة بالمورّد. في البداية، يضبط نظام الإصدار قيمة هذه الخاصية على القيمة نفسها التي تم ضبطها لـ ro.board.first_api_level، ولكن يمكن تعديلها إذا تمت ترقية قسم المورّد.
ro.product.first_api_level عدد صحيح مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK الذي يتم إطلاق الجهاز به في البداية. يضبط المصنّع الأصلي للجهاز هذه الخاصية ثم لا يتم تعديلها مطلقًا، حتى بعد ترقيات نظام التشغيل.
ro.vendor.api_level عدد صحيح مطابق لوصف مستوى واجهة برمجة التطبيقات الخاصة بالمورّد في الجدول السابق
ro.vndk.version عدد صحيح إصدار VNDK الذي تم إنشاء قسم المورّد استنادًا إليه. يتم ضبط هذه الخاصية في قسم المورّد.
ro.vendor.build.version.sdk عدد صحيح مستوى واجهة برمجة التطبيقات الخاصة بحزمة SDK لشجرة المصدر التي تم إنشاء قسم المورّد فيها.