يشمل Android 10 دعمًا لإنشاء
odm
قسمًا باستخدام نظام إصدار Android.
لمحة عن أقسام ODM
تخصِّص الشركات المصنّعة للتصميم الأصلي (ODM) مورّدي النظام على الرقاقة (SoC). حزم دعم اللوحة (BSPs) لأجهزتها الخاصة (لوحاتها). هذا النمط تمكنهم من تنفيذ وحدات النواة للمكونات الخاصة باللوحة، أو برامج خفية خاصة باللوحة أو ميزاتها الخاصة على طبقات تجريد الأجهزة (HALs). وقد يرغبون أيضًا في استبدال مكونات المنظومة على رقاقة (SoC) أو تخصيصها.
في إصدارات Android الأقدم، حالت هذه التخصيصات دون استخدام
صورة البائع للأجهزة التي تستخدم المنظومة على الرقاقة (SoC) نفسها (أو التي تتضمّن منظومة على رقاقة (SoC) مختلفة، ولكن في
نفس العائلة). في نظام التشغيل Android 10 والإصدارات الأحدث، يمكنك استخدام
تقسيم odm
لإجراء عمليات التخصيص، ما يتيح لك
استخدام صورة مورّد واحدة لرموز التخزين التعريفية للأجهزة المتعدّدة.
استخدام أقسام المنتج وODM
أتاح Android 9 إنشاء
product
الأقسام، التي تتيح استخدام صورة نظام واحدة لبرامج متعددة
يتم توفير رموز التخزين التعريفية بواسطة صور product.img
مختلفة. وفي حين أن
تم تخصيص قسم product
لرموز التخزين التعريفية للبرامج،
قسم odm
مخصص لرموز التخزين التعريفية للأجهزة.
من خلال وجود أقسام مخصصة للمنتجات وODM، يمكنك استخدام system
إلى استضافة رمز عام للمشاركة بين العديد من رموز التخزين التعريفية للبرامج،
vendor
على مضيف رمز BSP الخاص بمجال المنظومة على الرقاقة (BSP) لمشاركته بينهم.
لأجهزة متعددة بناءً على شريحة المنظومة على الرقاقة (SoC) المحددة.
استخدام أقسام منفصلة له عيوب، مثل صعوبة إدارة مساحة القرص (على سبيل المثال، يجب عليك حجز قدر محدود من المساحة للمستقبل النمو). ومع ذلك، لا شك في أن دعم Android 10 الأقسام الديناميكية مشكلة القرص، وتجعل إعادة تقسيم الجهاز أثناء يمكن إجراء عملية التحديث عبر شبكة غير سلكيّة (OTA).
مكوّنات ODM
يحتوي قسم odm
على المكونات التالية الخاصة بـ ODM
(على غرار القسم vendor
)، والمدرج في الجدول التالي.
المكوِّن الخاص بـ ODM | الموقع الجغرافي |
---|---|
وحدات النواة القابلة للتحميل (LKM) | /odm/lib/modules/*.ko |
المكتبات الأصلية | /odm/lib[64] |
طبقة تجريد الأجهزة (HALs) | /odm/lib[64]/hw |
سياسة SE | /odm/etc/selinux |
كائن VINTF البيانات | /odm/etc/vintf |
init.rc
الملفات |
/odm/etc/init |
خصائص النظام | /odm/build.prop |
تراكبات موارد وقت التشغيل (RRO) | /odm/overlay/*.apk |
التطبيقات | /odm/app/*.apk |
التطبيقات الخاصة | /odm/priv-app/*.apk |
مكتبات Java | /odm/framework/*.jar |
إعدادات نظام "إطار عمل Android" | /odm/etc/sysconfig/* و/odm/etc/permissions/* |
ما مِن صور مخصّصة.
عدم الاستخدام مخصّص الصور لأنّها لا تتوافق مع ما يلي:
- تثبيت وحدة على هدف محدّد: تتيح الصور المخصّصة نسخ العناصر إلى صورة، ولكن لا يمكن استخدامها تثبيت وحدة في قسم معين من خلال تحديد القسم المستهدف كجزء من قاعدة التصميم
- سونغ لا يمكن إنشاء
custom_images
باستخدام نظام إنشاء Sayg. - تحديث عبر اتصال لاسلكي: تُستخدَم الصور المخصَّصة صور ROM المصنعة التي لا يمكن إرسالها عبر الهواء.
الاحتفاظ بواجهات ABI بين الأقسام
القسم odm
هو امتداد لـ vendor
.
قسم القرص. عند التفكير في استقرار واجهة التطبيق الثنائية (ABI)، تأكَّد من
وضع البنية التالية في الاعتبار.
الشكل 1. الحفاظ على واجهة التطبيق الثنائية (ABI) بين الأقسام
- ما مِن استقرار في واجهة التطبيق الثنائية (ABI) بين
odm
وvendor
قسمًا. يجب ترقية القسمَين معًا. الوقت. - قد يعتمد القسمان
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
البارزة
تشمل المواقع المرجعية
في المنصة
ديناميكي
وlinker
حزمة
مدير، وshell/libc
.