سطح API فروشنده

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

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

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

مسدود کردن فروشنده

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

مسدود کردن فروشنده فقط در صورتی امکان‌پذیر است که در حال ساخت دستگاهی سازگار با اندروید باشید.

تعیین سطح API فروشنده (اندروید ۱۴-QPR3 و بالاتر)

برای اندروید ۱۴-QPR3 و بالاتر، سطح API فروشنده به طور جداگانه منتشر می‌شود، به این معنی که سطح API SDK و سطح API فروشنده همگام‌سازی نمی‌شوند.

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

اندروید ۱۴-QPR3 و بالاتر شامل ویژگی‌های سیستمی زیر مربوط به سطح API فروشنده است:

ویژگی سیستم قالب توضیحات تنظیم اولیه
ro.board.api_level عالیه سطح API فروشنده که نرم‌افزار یک چیپست از آن پشتیبانی می‌کند. این ویژگی برای همه چیپست‌ها تنظیم شده است. این به طور خودکار توسط سیستم ساخت تنظیم می‌شود.
ro.board.first_api_level عالیه سطح API فروشنده که نرم‌افزار یک چیپست برای اولین بار با آن منتشر شده است. این ویژگی فقط تابعی از چیپست است و در صورتی که چیپست SoC واجد شرایط فریز فروشنده باشد، توسط فروشندگان SoC تنظیم می‌شود. پس از تنظیم اولیه، این ویژگی باید نهایی در نظر گرفته شود و اصلاح نشود. اگرچه اکیداً توصیه نمی‌شود، اما در موارد نادر و استثنایی با شرایط فریز فروشنده جدید، به‌روزرسانی ممکن است مجاز باشد. فروشندگان SoC این تنظیم را با استفاده از BOARD_SHIPPING_API_LEVEL انجام می‌دهند.
ro.product.first_api_level عدد صحیح سطح API SDK که دستگاه در ابتدا با آن راه‌اندازی شده است. این ویژگی توسط سازنده اصلی (OEM) تنظیم شده و پس از آن هرگز به‌روزرسانی نمی‌شود، حتی پس از ارتقاء سیستم عامل.
ro.vendor.api_level عالیه سطح API فروشنده که با ro.product.first_api_level مطابقت دارد. ما ro.vendor.api_level روی مقدار ro.board.api_level تنظیم می‌کنیم، زمانی که ro.board.api_level کمتر از سطح API فروشنده ro.product.first_api_level باشد، فقط در صورتی که چیپست SoC واجد شرایط فریز فروشنده باشد. بعد از این جدول توضیح داده شده است.
ro.board.api_frozen بولی اگر سطح API فروشنده که ro.board.api_level نشان می‌دهد نهایی شده باشد، این ویژگی روی true تنظیم می‌شود. اگر این ویژگی تنظیم نشده باشد، به طور پیش‌فرض روی false تنظیم می‌شود.
ro.llndk.api_level عالیه سطح API فروشنده با فرمت YYYYMM که LLNDK فعلی در پارتیشن سیستم ارائه می‌دهد. LLNDK با نسخه‌های قبلی سازگار است، بنابراین هر تصویر فروشنده‌ای که کوچکتر یا مساوی این سطح API باشد، می‌تواند با این تصویر سیستم فلش شود. این ویژگی در پارتیشن سیستم تنظیم شده است.

ویژگی 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() سطح API فروشنده مربوطه را از یک سطح API SDK تعیین می‌کند. برای مثال، AVendorSupport_getVendorApiLevelOf(35) که در آن 35 سطح API SDK نسخه اصلی اندروید در سال 2024 است، 202404 برمی‌گرداند که تاریخ تقریبی برای اندروید 14-QPR3 است که در آن سطح API فروشنده فعلی تنظیم شده است.

تعیین سطح API فروشنده (اندروید ۱۳)

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

اندروید ۱۳ شامل ویژگی‌های سیستمی زیر مربوط به سطح API فروشنده است:

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