يتضمن نظام Android 9 والإصدارات الأحدث دعمًا لإنشاء أقسام product
باستخدام نظام إنشاء Android. في السابق، كان Android 8.x يفرض فصل المكونات الخاصة بـ SoC من قسم system
إلى قسم vendor
دون تخصيص مساحة للمكونات الخاصة بـ OEM المبنية من نظام بناء Android. يوفر نظام التشغيل Android 9 والإصدارات الأحدث أذونات إضافية وميزات القائمة البيضاء التي تنطبق على التطبيقات الخاصة الموجودة على أقسام مختلفة.
حول أقسام المنتج
يقوم العديد من مصنعي المعدات الأصلية بتخصيص صورة نظام AOSP لتنفيذ الميزات الخاصة بهم، بالإضافة إلى متطلبات الناقل. ومع ذلك، فإن مثل هذه التخصيصات تجعل من المستحيل استخدام صورة نظام واحدة لوحدات SKU متعددة للبرامج. يجب أن تكون كل صورة مختلفة لدعم التخصيصات، كما هو الحال مع مناطق أو شركات اتصالات مختلفة. إن استخدام قسم product
منفصل لاحتواء التخصيصات يجعل من الممكن استخدام صورة نظام واحدة لوحدات SKU المتعددة للبرامج. (يستضيف قسم system
تعليمات برمجية عامة يمكن مشاركتها بين العديد من وحدات SKU الخاصة بالبرامج). يستمر قسم vendor
في استضافة كود BSP الخاص بـ SoC والذي يمكن مشاركته بين أجهزة متعددة بناءً على SoC المحدد.
استخدام أقسام منفصلة له بعض العيوب، مثل إدارة مساحة القرص (يجب أن تظل مساحة محدودة محجوزة للنمو المستقبلي) والحفاظ على واجهة ثنائية مستقرة للتطبيق (ABI) بين الأقسام. قبل اتخاذ قرار باستخدام أقسام product
، خذ وقتًا للتفكير في تنفيذ AOSP الفريد الخاص بك وأساليب التخفيف المحتملة (مثل إعادة تقسيم الجهاز أثناء التحديث عبر الهواء (OTA) ، وهو ما لا يتم بواسطة Google ولكن يتم بواسطة بعض مصنعي المعدات الأصلية) ). سيكون التقسيم الديناميكي حلاً جيدًا لذلك.
أقسام المنتج والأذونات
في نظام التشغيل Android 9 والإصدارات الأحدث، يؤثر التغيير في الأذونات وعملية القائمة البيضاء على كيفية منح أذونات التطبيقات الخاصة على أقسام "المنتج" لديك. يجب أن يكون ملفأذونات permissions.xml
موجودًا في نفس القسم مثل التطبيقات الخاصة. إن وضع permissions.xml
في قسم system
للتطبيقات الخاصة لا يؤدي إلى توسيع هذه الأذونات لتشمل التطبيقات الخاصة في قسم product
، على الرغم من أن الأول هو امتداد للأخير. للحصول على تفاصيل حول الأذونات وعمليات القائمة البيضاء، راجع القائمة المسموح بها للأذونات المميزة .
تراث / تصنيع المعدات الأصلية مقابل / المنتج
لدينا نوعان من سمات قسم product
اعتمادًا على تطبيق واجهة المنتج . كما يختلف قسم product
عن قسم oem
القديم:
تقسيم | صفات |
---|---|
oem |
|
product |
|
product (الواجهات القسرية) |
|
لهذه الأسباب، يدعم 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
) - تكوينات نظام Android Framework الخاصة بالمنتج (
/product/etc/sysconfig/*
و/product/etc/permissions/*
) - ملفات الوسائط الخاصة بالمنتج (
/product/media/audio/*
) - ملفات
bootanimation
الخاصة بالمنتج
لا توجد صور مخصصة
لا يمكنك استخدام custom_images
. يفتقرون إلى الدعم لما يلي:
- تركيب الوحدات في هدف محدد . تدعم
custom_images
نسخ العناصر إلى صورة ولكن لا يمكنها تثبيت وحدة نمطية في قسم معين عن طريق تحديد القسم المستهدف كجزء من قاعدة البناء. - دعم سريع . لا يمكن إنشاء
custom_images
باستخدام نظام البناء Soong. - دعم التحديث عبر الهواء . يتم استخدام
custom_images
كصور ROM للمصنع ولا يمكنها تلقي تحديثات OTA.
الحفاظ على ABIs بين الأقسام
يعد قسم product
في Android 9 امتدادًا لقسم system
. توجد واجهة برمجة التطبيقات (ABI) ضعيفة بين أقسام product
system
، لذا يجب ترقية كليهما في نفس الوقت، ويجب أن تكون واجهة برمجة التطبيقات (ABI) مستندة إلى SDK للنظام. إذا كان نظام SDK لا يغطي جميع أسطح واجهة برمجة التطبيقات (API) بين 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 Verified Boot (AVB) لهذا القسم (تمامًا كما تفعل مع قسمي vendor
system
). لتمكين AVB، قم بتضمين علامات البناء التالية: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
.