پارتیشن‌های ODM

Android 10 از ساختن پارتیشن‌های odm بااستفاده از سیستم ساخت Android پشتیبانی می‌کند.

درباره پارتیشن‌های ODM

تولیدکنندگان طراحی اصلی (ODM) بسته‌های پشتیبانی برد (BSP) فروشنده سیستم روی تراشه (SoC) را برای دستگاه‌های خاص خود (بردهای خود) سفارشی‌سازی می‌کنند. این امر به آن‌ها امکان می‌دهد تا واحدهای هسته را برای اجزای خاص برد، شیاطین خاص برد، یا ویژگی‌های خودشان در لایه‌های انتزاع سخت‌افزار (HAL) پیاده‌سازی کنند. همچنین ممکن است بخواهند مؤلفه‌های SoC را جایگزین یا سفارشی‌سازی کنند.

در نسخه‌های پایین‌تر Android، چنین سفارشی‌سازی‌هایی مانع استفاده از یک تصویر فروشنده برای دستگاه‌های دارای SoC یکسان (یا دارای SoC متفاوت، اما در یک خانواده) می‌شد. در Android 10 و نسخه‌های بالاتر، می‌توانید از پارتیشن odm جداگانه برای سفارشی‌سازی‌ها استفاده کنید که به شما امکان می‌دهد از یک تصویر فروشنده برای چندین واحد نگهداری کالا (SKU) سخت‌افزاری استفاده کنید.

استفاده از بخش‌های محصول و ODM

‫Android 9 از ساختن product بخش‌ها پشتیبانی می‌کند و امکان استفاده از یک تصویر سیستم واحد برای چندین واحد نگهداری موجودی نرم‌افزار را که ازطریق تصاویر product.img مختلف تأمین می‌شوند فراهم می‌کند. درحالی‌که بخش product برای SKUهای نرم‌افزاری درنظر گرفته شده است، بخش odm برای SKUهای سخت‌افزاری درنظر گرفته شده است.

با پارتیشن‌های اختصاصی محصول و ODM، می‌توانید از پارتیشن system برای میزبانی کد عمومی برای هم‌رسانی بین بسیاری از واحدهای نگهداری موجودی نرم‌افزار و از پارتیشن vendor برای میزبانی کد BSP مختص SoC برای هم‌رسانی بین چندین دستگاه مبتنی بر SoC داده‌شده استفاده کنید.

استفاده از پارتیشن‌های جداگانه معایبی دارد، مثل دشواری در مدیریت فضای دیسک (برای مثال، باید مقدار محدودی فضا برای رشد آینده رزرو کنید). بااین‌حال، پشتیبانی Android 10 از پارتیشن‌های پویا مشکل دیسک را برطرف می‌کند و امکان پارتیشن‌بندی مجدد دستگاه درطول به‌روزرسانی ازطریق هوا (OTA) را فراهم می‌کند.

عناصر ODM

پارتیشن odm حاوی مؤلفه‌های زیر مختص ODM است (مشابه پارتیشن vendor) که در جدول زیر فهرست شده است.

عنصر خاص ODM مکان
واحدهای هسته قابل‌بارگیری (LKM) /odm/lib/modules/*.ko
کتابخانه‌های بومی /odm/lib[64]
HALs /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
داده‌های شیء VINTF /odm/etc/vintf
init.rc فایل /odm/etc/init
خصوصیات سیستم /odm/build.prop
رونهادهای منبع زمان اجرا (RRO) /odm/overlay/*.apk
برنامه‌ها /odm/app/*.apk
Priv-apps /odm/priv-app/*.apk
کتابخانه‌های جاوا /odm/framework/*.jar
پیکربندی‌های سیستم «چارچوب Android» ‫/odm/etc/sysconfig/* و /odm/etc/permissions/*

بدون تصویر سفارشی

از تصاویر سفارشی استفاده نکنید زیرا از موارد زیر پشتیبانی نمی‌کنند:

  • نصب پیمانه در هدف خاص. تصاویر سفارشی از کپی کردن آرتیفکت‌ها در تصویر پشتیبانی می‌کنند، اما نمی‌توانند با مشخص کردن پارتیشن هدف به‌عنوان بخشی از قانون ساخت، واحد را در پارتیشن خاصی نصب کنند.
  • Soong. custom_images را نمی‌توان بااستفاده از سیستم ساخت Soong ساخت.
  • به‌روزرسانی ازطریق هوا. از تصاویر سفارشی به‌عنوان تصاویر رام کارخانه‌ای استفاده می‌شود که نمی‌توانند ازطریق OTA به‌روز شوند.

حفظ ABI بین پارتیشن‌ها

بخش odm گسترش بخش vendor است. هنگام درنظر گرفتن پایداری میانای دودویی کاربردی (ABI)، معماری زیر را درنظر داشته باشید.

حفظ ABI بین پارتیشن‌ها

شکل ۱. حفظ ABI بین پارتیشن‌ها.

  • بین odm و vendor پارتیشن، پایداری ABI وجود ندارد. هر دو پارتیشن باید به‌طور هم‌زمان ارتقا یابند.
  • بخش‌های odm و vendor می‌توانند به یکدیگر وابسته باشند، اما بخش vendor باید بدون بخش odm کار کند.
  • ‫ABI بین odm و system با ‫ABI بین vendor و system یکسان است.

تعامل مستقیم بین بخش product و بخش vendor یا odm مجاز نیست. (این مورد توسط SEpolicy اعمال می‌شود.)

پیاده‌سازی پارتیشن‌های ODM

قبل‌از پیاده‌سازی پارتیشن جدید، تغییرات مربوط به AOSP را مرور کنید.

راه‌اندازی پارتیشن‌های ODM

برای راه‌اندازی odm پارتیشن، این پرچم‌های ساخت را اضافه کنید:

  • ‫BOARD_ODMIMAGE_PARTITION_SIZE برای اندازه پارتیشن ثابت
  • PRODUCT_USE_DYNAMIC_PARTITIONS و BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE برای اندازه پارتیشن پویا
  • نوع سیستم فایل BOARD_ODMIMAGE_FILE_SYSTEM_TYPE استفاده‌شده برای تصویر ODM
  • ‫PRODUCT_ODM_PROPERTIES برای /odm/build.prop برای استفاده در $(call inherit-product path/to/device.mk)، مانند PRODUCT_ODM_PROPERTIES += product.abc=ok

نصب واحد در بخش ODM

از این پرچم‌های ساخت برای نصب واحد در پارتیشن odm استفاده کنید:

  • device_specific: true در Android.bp
  • LOCAL_ODM_MODULE := true در Android.mk

فعال کردن «راه‌اندازی درستی‌سنجی‌شده»

برای جلوگیری از دستکاری نرم‌افزارهای مخرب در پارتیشن‌های odm، راه‌اندازی تأییدشده Android (AVB) را برای این پارتیشن‌ها فعال کنید (همان‌طور که برای پارتیشن‌های vendor و system انجام می‌دهید).

برای فعال کردن AVB، پرچم ساخت BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS را اضافه کنید. برای جزئیات درباره پیکربندی AVB در بخش‌بندی‌های پویا، به تغییرات پیکربندی AVB مراجعه کنید.

‫ /odm به‌عنوان پارتیشن /vendor دیگری درنظر گرفته شود

برای اطمینان از اینکه سیستم با پارتیشن odm به‌عنوان پارتیشن vendor برخورد می‌کند، هرگونه مرجع vendor کدبندی‌شده را با مجموعه‌ای از پارتیشن‌های سخت‌افزاری (درحال‌حاضر odm و vendor) جایگزین کنید. مکان‌های مرجع vendor قابل‌توجه در پلاتفرم شامل پیونددهنده پویا، مدیر بسته، و shell/libc می‌شود.