سطح API فروشنده به نسخه رابط پشتیبانی شده توسط پارتیشن فروشنده اشاره دارد. این رابط دو طرفه است؛ این رابط، API ای را که پارتیشن فروشنده به پارتیشن سیستم (لایه انتزاعی سخت افزار یا رابط HAL) ارائه میدهد، و همچنین API ای را که پارتیشن فروشنده از پارتیشن سیستم (کیت توسعه دهندگان بومی سطح پایین یا رابط LLNDK) نیاز دارد، توصیف میکند.
سطح API فروشنده همچنین برای تعیین الزامات نرمافزار فروشنده (VSRs) استفاده میشود، که مجموعهای از الزامات عملکردی و غیرعملکردی است که نرمافزار موجود در بخش فروشنده باید آنها را برآورده کند.
ادامهی این صفحه توضیح میدهد که چگونه بسته به نسخهی اندروید شما، از ویژگیهای سیستم برای تعیین سطح API فروشنده استفاده میشود.
اندروید به یک فروشنده اجازه میدهد تا پارتیشن فروشنده را در یک نسخه خاص از VSR ثابت نگه دارد. مجموعه ویژگیهایی که اندروید از پارتیشن فروشنده انتظار دارد، توسط سطح API فروشنده مرتبط با پارتیشن فروشنده تعیین میشود. در زمان اجرا، رفتار نرمافزار در حال اجرا در پارتیشن سیستم برای تطبیق با سطح API فروشنده پارتیشن فروشنده تنظیم میشود. به عنوان مثال، اگر نرمافزار موجود در پارتیشن سیستم توسط سطح API پارتیشن فروشنده پشتیبانی نشود، ممکن است ویژگیهای جدید را اجرا نکند.
مسدود کردن فروشنده فقط در صورتی امکانپذیر است که در حال ساخت دستگاهی سازگار با اندروید باشید.
برای اندروید ۱۴-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 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 مربوط به درخت منبع که پارتیشن فروشنده در آن ساخته شده است. |