سطح میانای برنامه‌سازی کاربردی فروشنده

سطح میانای برنامه‌سازی کاربردی فروشنده به نسخه واسطی اشاره دارد که توسط بخش فروشنده پشتیبانی می‌شود. این میانای برنامه‌سازی کاربردی دوطرفه است؛ این میانای برنامه‌سازی کاربردی که پارتیشن فروشنده به پارتیشن سیستم ارائه می‌دهد (لایه انتزاع سخت‌افزار یا میانای HAL) و همچنین میانای برنامه‌سازی کاربردی که پارتیشن فروشنده از پارتیشن سیستم می‌خواهد (کیت توسعه‌دهندگان بومی سطح پایین یا میانای LLNDK) را توصیف می‌کند.

از سطح Vendor API برای تعیین «الزامات نرم‌افزار فروشنده» (VSR) نیز استفاده می‌شود که مجموعه‌ای از الزامات کاربردی و غیرکاربردی است که نرم‌افزار موجود در بخش فروشنده باید آن‌ها را برآورده کند.

بقیه این صفحه توضیح می‌دهد که چگونه از دارایی‌های سیستم، بسته به نسخه Android شما، برای تعیین سطح API فروشنده استفاده می‌شود.

یخ‌زدگی فروشنده

Android به فروشنده اجازه می‌دهد پارتیشن فروشنده را در نسخه خاصی از VSR ثابت کند. مجموعه ویژگی‌هایی که Android از پارتیشن فروشنده انتظار دارد توسط سطح میانای برنامه‌سازی کاربردی فروشنده مرتبط با پارتیشن فروشنده تعیین می‌شود. در زمان اجرا، رفتار نرم‌افزار درحال اجرا در بخش سیستم به‌گونه‌ای تنظیم می‌شود که با سطح میانای برنامه‌سازی کاربردی فروشنده در بخش فروشنده مطابقت داشته باشد. برای مثال، اگر سطح میانای برنامه‌سازی کاربردی پارتیشن فروشنده از ویژگی‌های جدید پشتیبانی نکند، نرم‌افزار موجود در پارتیشن سیستم ممکن است از این ویژگی‌ها استفاده نکند.

توقف فروشنده فقط درصورتی دردسترس است که درحال ایجاد یک دستگاه سازگار با Android باشید.

تعیین سطح میانای برنامه‌سازی کاربردی فروشنده (Android 14 QPR3 و نسخه‌های جدیدتر)

برای Android 14 QPR3 و نسخه‌های جدیدتر، سطح API فروشنده به‌طور جداگانه منتشر می‌شود، یعنی سطح API کیت توسعه نرم‌افزار و سطح API فروشنده همگام‌سازی نمی‌شوند.

به‌دلیل برنامه‌های زمانی انتشار جداگانه، برای Android 14 QPR3 و نسخه‌های جدیدتر، سطح میانای برنامه‌سازی کاربردی فروشنده به‌طور کامل از سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار جدا شده است. برای اطمینان از اینکه این جداسازی واضح است، قالب سطح میانای برنامه‌سازی کاربردی فروشنده به‌صورت تاریخ قالب‌بندی‌شده YYYYMM (سال و ماه) است، درحالی‌که سطح کیت توسعه نرم‌افزار یک عدد صحیح است.

‫Android 14 QPR3 و نسخه‌های جدیدتر حاوی ویژگی‌های سیستم زیر مربوط به سطح میانای برنامه‌سازی کاربردی فروشنده است:

خصوصیت سیستم قالب شرح تنظیم اولیه
ro.board.api_level سال‌ماه سطح میانای برنامه‌سازی کاربردی فروشنده که نرم‌افزار تراشه پشتیبانی می‌کند. این ویژگی برای همه مجموعه تراشه‌ها تنظیم شده است. این مورد را سیستم ساخت به‌طور خودکار تنظیم می‌کند.
ro.board.first_api_level سال‌ماه سطح میانای برنامه‌سازی کاربردی فروشنده که نرم‌افزار تراشه برای اولین‌بار با آن منتشر شده است. این ویژگی فقط تابعی از مجموعه تراشه است و توسط فروشندگان SoC تنظیم می‌شود، اگر مجموعه تراشه SoC برای توقف فروشنده واجدشرایط باشد. پس‌از تنظیم اولیه، این دارایی باید نهایی درنظر گرفته شود و تغییر نکند. اگرچه به‌شدت توصیه نمی‌شود، اما در موارد نادر و استثنایی، ممکن است با داشتن شرایط جدید صلاحیت انجماد فروشنده، به‌روزرسانی مجاز باشد. فروشندگان SoC این تنظیم را بااستفاده از BOARD_SHIPPING_API_LEVEL تنظیم می‌کنند.
ro.product.first_api_level عدد صحیح سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار که دستگاه در ابتدا با آن راه‌اندازی می‌شود. این ویژگی توسط OEM تنظیم می‌شود و سپس هرگز به‌روز نمی‌شود، حتی پس‌از ارتقای سیستم‌عامل.
ro.vendor.api_level YYYYMM سطح میانای برنامه‌سازی کاربردی فروشنده که با ro.product.first_api_level مطابقت دارد. وقتی ro.board.api_level کمتر از سطح API ارائه‌دهنده ro.product.first_api_level باشد، ro.vendor.api_level را روی مقدار ro.board.api_level تنظیم می‌کنیم، اما فقط درصورتی‌که تراشه SoC برای توقف ارائه‌دهنده واجدشرایط باشد. بعداز این جدول شرح داده شده است.
ro.board.api_frozen بولی اگر سطح API فروشنده که ro.board.api_level نشان می‌دهد نهایی شده باشد، این ویژگی روی true تنظیم می‌شود. اگر این ویژگی تنظیم نشده باشد، به‌طور پیش‌فرض روی false تنظیم می‌شود.
ro.llndk.api_level YYYYMM سطح API ارائه‌دهنده با قالب 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() سطح میانای برنامه‌سازی کاربردی فروشنده مربوطه را از سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار تعیین می‌کند. برای مثال AVendorSupport_getVendorApiLevelOf(35)، که در آن 35 سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار نسخه اصلی Android در سال ۲۰۲۴ است، 202404 را برمی‌گرداند که تاریخ تقریبی Android 14 QPR3 است، یعنی زمانی که سطح میانای برنامه‌سازی کاربردی فروشنده فعلی تنظیم شد.

تعیین سطح میانای برنامه‌سازی کاربردی فروشنده (Android 13)

سطح میانای برنامه‌سازی کاربردی فروشنده از سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار پیروی می‌کند، که برای رابط برنامه-سیستم‌عامل است و هر سال با انتشار پلاتفرم جدید Android در AOSP به‌روز می‌شود.

‫Android 13 شامل ویژگی‌های سیستم زیر مربوط به سطح میانای برنامه‌سازی کاربردی فروشنده است:

ویژگی سیستم قالب شرح تنظیم اولیه
ro.board.first_api_level عدد صحیح سطح میانای برنامه‌سازی کاربردی فروشنده که نرم‌افزار تراشه برای اولین‌بار با آن منتشر شده است. این ویژگی فقط به تراشه مربوط است و نه فروشندگان SoC و نه سازندگان تجهیزات اصلی نمی‌توانند آن را تغییر دهند. این دارایی فقط برای مجموعه‌های تراشه‌ای تنظیم شده است که برای توقف فروشنده واجدشرایط هستند مقدار با تنظیم BOARD_SHIPPING_API_LEVEL در فایل device.mk تعیین می‌شود.
ro.board.api_level عدد صحیح سطح میانای برنامه‌سازی کاربردی فروشنده که نرم‌افزار تراشه پشتیبانی می‌کند. این دارایی فقط برای چیپ‌ست‌هایی تنظیم شده است که واجدشرایط توقف فروشنده هستند. در ابتدا، مقدار این ویژگی توسط سیستم ساخت روی همان مقدار ro.board.first_api_level تنظیم می‌شود، اما اگر پارتیشن فروشنده ارتقا یابد، می‌تواند به‌روز شود.
ro.product.first_api_level عدد صحیح سطح میانای برنامه‌سازی کاربردی کیت توسعه نرم‌افزار که دستگاه در ابتدا با آن راه‌اندازی می‌شود. این دارایی توسط سازنده تجهیزات اصلی تنظیم می‌شود و دیگر به‌روز نمی‌شود، حتی پس‌از ارتقای سیستم‌عامل.
ro.vendor.api_level عدد صحیح مشابه با شرح سطح API فروشنده در جدول قبلی.
ro.vndk.version عدد صحیح نسخه VNDK که پارتیشن فروشنده براساس آن ساخته شده است. این دارایی در بخش فروشنده تنظیم شده است.
ro.vendor.build.version.sdk عدد صحیح سطح API کیت توسعه نرم‌افزار درخت منبعی که پارتیشن فروشنده در آن ساخته شده است.