يتيح نظام التشغيل 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.bpLOCAL_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.