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

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

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

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

تجميد المورّد

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

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

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

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

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

يحتوي الإصدار 14-QPR3 من نظام التشغيل Android والإصدارات الأحدث على ملفّات تعريف النظام التالية المرتبطة بمستوى واجهة برمجة التطبيقات الخاصة بالمورّد (ro.vendor.api_level):

سمة النظام التنسيق الوصف الإعداد الأوّلي
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.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 لإصدار Android الرئيسي في عام 2024، القيمة 202404، وهي التاريخ التقريبي لإصدار Android 14-QPR3 عندما تم ضبط المستوى الحالي لواجهة برمجة التطبيقات الخاصة بالمورّد.

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

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

يحتوي الإصدار 13 من نظام التشغيل Android على ملفّات برمجة التطبيقات التالية المتعلقة بالنظام والتي تتعلّق بالمستوى ro.vendor.api_level من واجهة برمجة التطبيقات الخاصة بالمورّد:

سمة النظام التنسيق الوصف الإعداد الأوّلي
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 لشجرة المصدر التي تم إنشاء قسم المورِّد فيها.
ro.vendor.build.version.release عدد صحيح إصدار النظام الأساسي لشجرة المصدر التي تم إنشاء قسم المورّد فيها
ro.vendor.build.version.release_or_codename عدد صحيح الاسم الرمزي لشجرة المصدر التي تم إنشاء قسم المورّد فيها.

يتم ضبط السمة ro.vendor.api_level تلقائيًا على الحدّ الأدنى من ro.board.api_level (أو ro.board.first_api_level إذا لم يتم تحديد ro.board.api_level) و ro.product.first_api_level.