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 بین پارتیشنها.
- بین
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.bpLOCAL_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 میشود.