يتيح نظام التشغيل Android 10 إنشاء أقسام
odm
باستخدام نظام إنشاء Android.
لمحة عن أقسام قياس الإحالات الناجحة على الجهاز فقط (ODM)
يُخصّص المصنّعون الأصليون للتصميم (ODM) حِزم دعم اللوحة (BSP) لمورّدي المنظومة على الرقاقة (SoC) وفقًا لأجهزةهم المحدّدة (لوحاتهم). ويتيح لهم ذلك تنفيذ وحدات kernel للمكونات الخاصة باللوحة، أو الخوادم الدائمة الخاصة باللوحة، أو ميزاتهم الخاصة على طبقات HAL (Hardware Abstraction Layers). وقد يريدون أيضًا استبدال مكونات شريحة المعالجة المُدمجة أو تخصيصها.
في الإصدارات القديمة من Android، كانت هذه التخصيصات تمنع استخدام ملف واحد
لجهة تصنيع للأجهزة التي تستخدم المنظومة على الرقاقة نفسها (أو أنظمة مختلفة على الرقاقة، ولكن ضمن
العائلة نفسها). في الإصدار 10 من Android والإصدارات الأحدث، يمكنك استخدام مشاركة odm
منفصلة للتخصيصات، ما يتيح لك استخدام مشاركة مورّد واحدة لرموز تخزين تعريفية متعددة للأجهزة.
استخدام أقسام المنتج وقسم الشركة المصنّعة للجهاز
أضاف الإصدار 9 من Android إمكانية إنشاء
product
أقسام، ما يتيح استخدام صورة نظام واحدة لعدة رمزَي تعريف برمجيَين
(SKU) للبرامج يتم توفيرهما من خلال صور product.img
مختلفة. في حين أنّ القسم
product
مخصّص لرموز التخزين التعريفية للبرامج، فإنّ القسم
odm
مخصّص لرموز التخزين التعريفية للأجهزة.
باستخدام أقسام المنتجات وقسم ODM المخصّصَين، يمكنك استخدام القسم system
لاستضافة رمز برمجي عام لمشاركته مع العديد من رموز التخزين التعريفية للبرامج، واستخدام القسم
vendor
لاستضافة رمز BSP خاص بوحدة المعالجة المركزية لمشاركته مع
أجهزة متعددة استنادًا إلى وحدة المعالجة المركزية المحدّدة.
هناك عيوب لاستخدام أقسام منفصلة، مثل صعوبة إدارة مساحة القرص (على سبيل المثال، يجب حجز مساحة محدودة لزيادة حجمه في المستقبل). ومع ذلك، يزيل توفُّر ميزة الأقسام الديناميكية في نظام التشغيل Android 10 مشكلة القرص، ويجعل إعادة تقسيم جهاز أثناء تحديث عبر شبكة غير سلكيّة (OTA) ممكنًا.
مكوّنات ميزة "قياس الإحالات الناجحة على الجهاز فقط"
يحتوي القسم odm
على المكوّنات التالية الخاصة بجهة تصنيع الأجهزة الأصلية
(مثل القسم vendor
)، والمُدرَجة في الجدول التالي.
مكوّن خاص بالمصنّع الأصلي للجهاز | الموقع الجغرافي |
---|---|
وحدات النواة القابلة للتحميل (LKM) | /odm/lib/modules/*.ko |
المكتبات الأصلية | /odm/lib[64] |
HALs | /odm/lib[64]/hw |
SEPolicy | /odm/etc/selinux |
بيانات عنصر VINTF | /odm/etc/vintf |
init.rc
files |
/odm/etc/init |
خصائص النظام | /odm/build.prop |
تراكب الموارد في وقت التشغيل (RRO) | /odm/overlay/*.apk |
التطبيقات | /odm/app/*.apk |
Priv-apps | /odm/priv-app/*.apk |
مكتبات Java | /odm/framework/*.jar |
إعدادات نظام إطار عمل Android | /odm/etc/sysconfig/* و/odm/etc/permissions/* |
ما مِن صور مخصّصة
لا تستخدِم صورًا مخصّصة لأنّها لا تتيح ما يلي:
- تركيب وحدة على هدف معيّن: تتيح الصور المخصّصة نسخ العناصر إلى صورة، ولكن لا يمكن تثبيت وحدة في قسم معيّن من خلال تحديد القسم المستهدف كجزء من قاعدة إنشاء.
- Soong لا يمكن إنشاء
custom_images
باستخدام نظام إنشاء Soong. - التحديث عبر الهواء: تُستخدَم الصور المخصّصة كملف روم مصنع لا يمكن تثبيته عبر الهواء.
الحفاظ على واجهات ABI بين الأقسام
قسم odm
هو امتداد لقسم vendor
. عند التفكير في استقرار واجهة التطبيق الثنائية (ABI)، يجب مراعاة
البنية التالية.

الشكل 1: الحفاظ على ABI بين الأقسام
- لا يتوفّر ثبات ABI بين قسمَي
odm
وvendor
. يجب ترقية كلا القسمَين في الوقت نفسه. - يمكن أن يعتمد القسمان
odm
وvendor
على بعضهما البعض، ولكن يجب أن يعمل القسمvendor
بدون قسمodm
. - إنّ ABI بين
odm
وsystem
هو نفسه ABI بينvendor
وsystem
.
لا يُسمح بالتفاعل المباشر بين قسم product
وقسم
vendor
أو odm
. (يتم فرض ذلك من خلال SEpolicy).
تنفيذ أقسام قياس الإحالات الناجحة على الجهاز فقط
قبل تنفيذ قسم جديد، راجِع التغييرات المتعلّقة بـ 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 Verified Boot
(AVB) لهذه الأقسام (تمامًا كما تفعل مع قسمَي vendor
و
system
).
لتفعيل AVB، أدرِج علامة الإنشاء
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. لمعرفة التفاصيل حول ضبط
AVB على الأقسام الديناميكية، يُرجى الاطّلاع على
تغييرات ضبط
AVB.
التعامل مع /odm كقسم /vendor آخر
لضمان تعامل النظام مع قسم odm
كقسم
vendor
، استبدِل أيّ إشارات vendor
مبرمَجة بشكل ثابت بمجموعة من الأقسام المخصّصة للأجهزة (حاليًا
odm
وvendor
). وتشمل مواضع الإشارة المهمة إلى vendor
في النظام الأساسي
المنسق
الديناميكي و
مدير
الحِزم وshell/libc
.