يشمل الإصدار 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 |
|
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
) - إعدادات نظام 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