أقسام المنتجات

يشمل الإصدار 9 من Android والإصدارات الأحدث دعمًا لإنشاء product قسمًا باستخدام نظام إصدار Android. في السابق، فرض نظام Android 8.x فصل المكوّنات الخاصة بالمنظومة على الرقاقة (SoC). من قسم system إلى vendor بدون تخصيص مساحة للمكونات الخاصة بالمُصنّع الأصلي والتي تم إنشاؤها من نظام إصدار Android يوفّر الإصدار 9 من نظام Android والإصدارات الأحدث المزيد من الأذونات والإضافة إلى القائمة البيضاء التي تنطبق على التطبيقات الخصوصية على أقسام مختلفة.

لمحة عن أقسام المنتجات

يخصّص العديد من المصنّعين الأصليين للأجهزة صورة نظام AOSP لتنفيذ ميزاتهم الخاصة، بالإضافة إلى متطلبات شركة النقل. ومع ذلك، فإن هذه التخصيصات تجعل من المستحيل استخدام صورة نظام واحدة لرموز تخزين تعريفية (SKU) لبرامج متعددة. على كل يجب أن تكون الصورة مختلفة لإتاحة التخصيصات، كما هو الحال مع لمناطق أو شركات تشغيل مختلفة. استخدام تقسيم قسم product ليحتوي على تخصيصات من الممكن استخدام صورة نظام واحدة لرموز التخزين التعريفية للبرامج المتعددة. ( يستضيف قسم system رمزًا عامًا يمكن مشاركته بينهم. العديد من رموز التخزين التعريفية للبرامج). يستمر القسم vendor في استضافة. رمز BSP الخاص بمجال المنظومة على الرقاقة والذي يمكن مشاركته بين عدة مستخدمين بناءً على شريحة المنظومة على الرقاقة (SoC) المحددة.

فإن استخدام أقسام منفصلة له بعض العيوب، مثل إدارة مساحة القرص (يجب الاحتفاظ بقدر محدود من المساحة للمستقبل ونموها) والحفاظ على استخدام واجهة ثنائية مستقرة للتطبيق (ABI) بين الأقسام. قبل تقرر استخدام product قسمًا، خذ بعض الوقت للنظر في تنفيذ بروتوكول AOSP الفريد وأساليب التخفيف المحتملة (مثل إعادة تقسيم الجهاز أثناء العرض عبر شبكة غير سلكيّة (OTA)، وهو إجراء لا تنفذه Google ولكن يجريه بعض المصنّعين الأصليين للأجهزة). التقسيم الديناميكي هو حلاً جيدًا لهذا.

أقسام المنتج وأذوناته

سيؤدّي تغيير الأذونات في الإصدار 9 من نظام Android والإصدارات الأحدث وعملية الإضافة إلى القائمة البيضاء في كيفية منح أذونات التطبيقات الشخصية على أقسام "المنتج" الخاصة بك. الملف permissions.xml أن تتواجد في القسم نفسه مثل تطبيقات Priv. يؤدي وضع ملف واحد (permissions.xml) في القسم "system" للتطبيقات الخاصة لا يوسِّع نطاق هذه الأذونات ليشمل التطبيقات الخاصة في product على الرغم من أن الأمر الأول يعد امتدادًا لخيار الأخير. للحصول على تفاصيل حول الأذونات وعمليات القائمة البيضاء، اطلع على القائمة المسموح بها للأذونات المميّزة:

الإصدارات القديمة /المصنّع الأصلي للجهاز مقابل /المنتج

لدينا نوعان من سمات القسم product اعتمادًا على على المنتج واجهة المستخدم. يختلف قسم product أيضًا. مقارنةً بقسم oem القديم:

قسم السمات
oem
  • غير قابل للتحديث؛ يومض عادةً مرة واحدة في المصنع.
  • مصمم حسب المتغيرات الصغيرة، مثل العلامة التجارية واللون. وجود اختلاف محتوى قسم oem لا يعني أن المنتج البرمجيات مختلفة.
  • لا يعتمد قسم system على قسم oem. (تستخدم هذه الميزة oem القسم عند العثور على ملف معين هناك فقط).
  • يتم استخدام واجهة برمجة التطبيقات العامة في قسم system فقط.
product
  • قابل للتحديث
  • إلى جانب صورة النظام (يتم تحديث كل منهما معًا)
  • مصمّم حسب مجموعات المنتجات أو المنتجات.
  • يمكن أن يعتمد جزء النظام على قسم product.
  • يمكن استخدام واجهات برمجة التطبيقات غير العامة نظرًا إلى أنه يتم تحديثها في الوقت نفسه.
product (الواجهات المفروضة)
  • قابل للتحديث
  • بشكل منفصل مع صورة النظام.
  • مصمّم حسب مجموعات المنتجات أو المنتجات.
  • لا يعتمد قسم system على product. قسم القرص.
  • لا يمكن استخدام واجهات برمجة التطبيقات المخفية، ولكن يستخدم فقط واجهات برمجة التطبيقات العامة والنظام على قسم واحد (system).

لهذه الأسباب، يتيح Android 9 استخدام قسم product مع إمكانية استخدام قسم oem القديم للأجهزة التي تعتمد على بها. لفصل قسم product عن system قسم متوافق مع Android 11 فرض product الواجهات.

/مكوّن المنتج

يحتوي قسم product على المكوّنات التالية:

  • خصائص النظام الخاصة بالمنتج (/product/build.prop)
  • مصاريف الملاحَمة (RRO) الخاصة بالمنتج (/product/overlay/*.apk)
  • التطبيقات الخاصة بالمنتج (/product/app/*.apk)
  • التطبيقات الخاصة بالمنتجات (/product/priv-app/*.apk)
  • المكتبات الخاصة بالمنتجات (/product/lib/*)
  • مكتبات جافا الخاصة بالمنتج (/product/framework/*.jar)
  • إعدادات نظام AndroidFrame الخاصة بالمنتج (/product/etc/sysconfig/* و /product/etc/permissions/*)
  • ملفات الوسائط الخاصة بالمنتج (/product/media/audio/*)
  • ملفات bootanimation خاصة بالمنتج

ما مِن صور_مخصّصة

لا يمكنك استخدام "custom_images". تفتقر إلى دعم التالي:

  • تثبيت الوحدات في هدف محدّد: يتوافق custom_images مع نسخ العناصر إلى صورة، ولكن لا يمكن تثبيت وحدة ما في قسم معين من خلال تحديد هدفه كجزء من قاعدة التصميم.
  • فريق دعم Soong: يتعذر استخدام custom_images تم بناؤه باستخدام نظام إنشاء سونغ.
  • إتاحة التحديث عبر الهواء: يتم استخدام custom_images كذاكرة برامج ثابتة من المصنع. الصور التي لا يمكنها تلقّي تحديثات عبر الهواء.

الاحتفاظ بواجهات ABI بين الأقسام

قسم product في Android 9 هو امتداد قسم system. هناك واجهة تطبيق ثنائية (ABI) ضعيفة بين القسمَين product وsystem، لذا يجب أن يكونا معًا. في الوقت نفسه، ويجب أن تستند واجهة التطبيق الثنائية (ABI) إلى حزمة تطوير البرامج (SDK) الخاصة بالنظام. إذا كانت حزمة SDK للنظام لا تغطي جميع مساحات عرض واجهة برمجة التطبيقات في الفترة بين product و system، على المصنّعين الأصليين للأجهزة الاحتفاظ بواجهات التطبيق الثنائية (ABI) الخاصة بهم بين القسمين.

يمكن أن يتضمّن القسمان product وsystem والاعتماد على بعضها البعض. ومع ذلك، فإن الاختبارات باستخدام صورة النظام العامة (GSI) أن يعمل بشكل صحيح بدون قسم "product".

عند فرض واجهات product، يتم عرض product يتم إلغاء ارتباط القسم بالقسم system. product يستخدم هذا القسم الواجهات المسموح بها فقط من قسم system.

يجب ألا يكون للقسم product أي اعتمادية من خلال واجهات غير مستقرة على قسم vendor. التفاعل المباشر بين تم حظر القسمَين product وvendor. (يتم فرض ذلك بواسطة SEpolicy.)

تنفيذ أقسام المنتج

قبل تنفيذ قسم جديد للمنتج، يُرجى مراجعة ذات صلة التغييرات في قسم المنتج في AOSP. بعد ذلك، لإعداد product، قم بتضمين علامات المجلس أو إنشاء المنتج التالية:

  • BOARD_USES_PRODUCTIMAGE
  • BOARD_PRODUCTIMAGE_PARTITION_SIZE
  • BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
  • PRODUCT_PRODUCT_PROPERTIES في /product/build.prop. يجب أن تكون هذه القيم ضمن $(call inherit-product path/to/device.mk)، كما في PRODUCT_PRODUCT_PROPERTIES += product.abc=ok.

تثبيت وحدة في قسم المنتج

استخدِم علامات الإصدار التالية لتثبيت وحدة في قسم product.

  • product_specific: true في Android.bp
  • LOCAL_PRODUCT_MODULE := true في Android.mk

تفعيل التشغيل المتحقَّق منه

لمنع التلاعب بقسم product من خلال برامج ضارة، قم بتمكين نظام التشغيل Android التشغيل المتحقَّق منه (AVB) لذلك القسم (تمامًا كما تفعل في القسمَين vendor وsystem). لتفعيل AVB، تشمل علامات الإصدار التالية: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS