سطح API فروشنده

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

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

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

فریز فروشنده

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

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

تعیین سطح API فروشنده (Android 14-QPR3 و جدیدتر)

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

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

Android 14-QPR3 و نسخه‌های جدیدتر شامل ویژگی‌های سیستم زیر مربوط به سطح API فروشنده ( ro.vendor.api_level ):

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

تعیین سطح API فروشنده (Android 13)

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

Android 13 شامل ویژگی‌های سیستم زیر مربوط به سطح API فروشنده ( ro.vendor.api_level ) است:

ویژگی سیستم قالب توضیحات تنظیم اولیه
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 درخت منبع که در آن پارتیشن فروشنده ساخته شده است.
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 تنظیم می شود.