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

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

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

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

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

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

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

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

بالنسبة إلى الإصدار 14-QPR3 من نظام التشغيل Android والإصدارات الأحدث، يتم إصدار مستوى واجهة برمجة التطبيقات للمورّد بشكل منفصل، ما يعني عدم مزامنة مستوى واجهة برمجة التطبيقات لحزمة تطوير البرامج (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) إذا كانت شريحة المنظومة على الرقاقة (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.