أقسام ODM

يشمل 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)، تأكَّد من وضع البنية التالية في الاعتبار.

الاحتفاظ بواجهة 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.