أقسام ODM

يتيح نظام التشغيل 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)، يجب مراعاة البنية التالية.

الحفاظ على 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.