يصف هذا القسم مصفوفات توافق الإطار والجهاز ومخطط مصفوفة التوافق . لقواعد المباراة ، انظر قواعد المطابقة .
مصفوفة توافق الإطار (FCM)
تصف مصفوفة توافق الإطار (FCM) متطلبات الإطار على الجهاز الذي يعمل عليه. تتكون مصفوفة توافق الإطار من مصفوفة توافق النظام ومصفوفة توافق المنتج ومصفوفة توافق نص النظام. يجب تلبية متطلبات FCM من خلال بيان الجهاز (المتطلبات التي يتم فرضها في وقت الإنشاء ووقت التشغيل وفي VTS).
يعد كل من system_ext FCM و FCM المنتج مكملين لـ FCM الخاص بالجهاز (مثبت في قسم النظام).
- يجب أن يعكس جهاز FCM متطلبات الوحدات النمطية في قسم النظام .
- يجب أن تعكس FCM system_ext المتطلبات من خلال الوحدات النمطية في قسم نص النظام.
- يجب أن يعكس المنتج FCM المتطلبات حسب الوحدات في قسم المنتج .
يجب أن تتوافق جميع نماذج FCM مع تعديلات الشركة المصنعة للمعدات الأصلية لإطار العمل في أقسام النظام والمنتج و system_ext. على سبيل المثال ، إذا كان أحد التطبيقات المثبتة في قسم المنتج يستخدم امتداد مورد لواجهة HAL ، فيجب الإعلان عن متطلبات واجهة HAL في المنتج FCM.
مثال على ملف مصفوفة توافق النظام:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework" level="3"> <hal> <name>android.hardware.camera</name> <version>1.0</version> <version>3.1-4</version> <interface> <name>ICameraProvider</name> <instance>default</instance> <regex-instance>[a-z_]+/[0-9]+</regex-instance> </interface> </hal> <hal> <name>android.hardware.nfc</name> <version>1.0</version> <interface> <name>INfc</name> <instance>default</instance> </interface> </hal> <hal optional="true"> <name>android.hardware.graphics.composer</name> <version>2.1</version> <interface> <name>IComposer</name> <instance>default</instance> </interface> </hal> <hal format="aidl" optional="true"> <name>android.hardware.light</name> <version>1-2</version> <interface> <name>ILights</name> <instance>default</instance> </interface> </hal> <hal format="native"> <name>GL</name> <version>1.1</version> <version>3.0</version> </hal> <hal format="native"> <name>EGL</name> <version>1.1</version> </hal> <kernel version="3.18.51"> <!-- common configs --> </kernel> <kernel version="3.18.51"> <!-- arm specific configs --> <condition> <config> <key>CONFIG_ARM</key> <value type="tristate">y</value> </config> <condition> <config> <key>CONFIG_A</key> <value type="string"></value> </config> <config> <key>CONFIG_B</key> <value type="tristate">y</value> </config> </kernel> <kernel version="4.1.22"> <!-- common configs --> <config> <key>CONFIG_A</key> <value type="string">foo</value> </config> <config> <key>CONFIG_B2</key> <value type="int">1024</value> </config> </kernel> <sepolicy> <kernel-sepolicy-version>30</kernel-sepolicy-version> <sepolicy-version>25.0</sepolicy-version> <sepolicy-version>26.0-3</sepolicy-version> </sepolicy> <avb> <vbmeta-version>2.1</vbmeta-version> </avb> <xmlfile format="dtd"> <name>media_profile</name> <version>1.0</version> <path>/system/etc/media_profile_V1_0.dtd</path> </xmlfile> </compatibility-matrix>
لمزيد من التفاصيل ، راجع دورة حياة FCM .
مصفوفة توافق المنتج
المنتج FCM هو ملف مصفوفة توافق إطار العمل في قسم المنتج. ينضم كائن VINTF إلى المنتج FCM مع FCMs في أقسام النظام و system_ext في وقت التشغيل.
مثال على ملف FCM للمنتج:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework"> <hal> <name>vendor.foo.camera</name> <version>1.0</version> <interface> <name>IBetterCamera</name> <instance>default</instance> </interface> </hal> </compatibility-matrix>
مصفوفة توافق نص النظام
يعد ملف system_ext FCM ملف مصفوفة توافق إطار العمل في قسم نص النظام. ينضم كائن VINTF إلى system_ext FCM مع FCMs في أقسام النظام والمنتج في وقت التشغيل. راجع مصفوفة توافق المنتج للحصول على مثال لملف system_ext FCM.
مصفوفة توافق الجهاز (DCM)
تصف مصفوفة توافق الجهاز مجموعة من المتطلبات التي يتوقعها الجهاز من إطار العمل (المتطلبات التي يتم فرضها عند الإطلاق ووقت OTA).
مثال على ملف DCM:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="device"> <hal> <name>android.hidl.manager</name> <version>1.0</version> <interface> <name>IServiceManager</name> <instance>default</instance> </interface> </hal> <hal> <name>android.hidl.memory</name> <version>1.0</version> <interface> <name>IMemory</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.hidl.allocator</name> <version>1.0</version> <interface> <name>IAllocator</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.framework.sensor</name> <version>1.0</version> <interface> <name>ISensorManager</name> <instance>default</instance> </interface> </hal> <vendor-ndk> <version>27</version> </vendor-ndk> <system-sdk> <version>27</version> </system-sdk> </compatibility-matrix>
مخطط مصفوفة التوافق
يصف هذا القسم معنى علامات XML هذه. يمكن أن تكون بعض العلامات "المطلوبة" مفقودة من الملف المصدر في شجرة مصدر Android ويتم كتابتها بواسطة assemble_vintf
في وقت الإنشاء. يجب أن تكون العلامات "المطلوبة" موجودة في الملفات المقابلة على الجهاز.
-
?xml
- اختياري. يوفر فقط معلومات لمحلل XML.
-
compatibility-matrix.version
- مطلوب. نسخة ميتا من مصفوفة التوافق هذه. يصف العناصر المتوقعة في مصفوفة التوافق. لا علاقة لها بإصدار XML.
-
compatibility-matrix.type
- مطلوب. نوع مصفوفة التوافق هذه:
-
"device"
: مصفوفة توافق الجهاز. -
"framework"
: مصفوفة توافق الإطار.
-
-
manifest.level
- مطلوب لمصفوفة توافق الإطار. في Android 12 والإصدارات الأحدث ، يُسمح به في ملفات مصفوفة توافق إطار العمل في أقسام المنتج و system_ext. يحدد إصدار مصفوفة توافق الإطار (إصدار FCM) لهذا الملف. لا تعلن عن ذلك في مصفوفة توافق إطار العمل الخاصة بالجهاز (مثل
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- اختياري ويمكن تكرارها. يسرد HAL واحد (HIDL أو أصلي) مطلوب من قبل مالك مصفوفة التوافق (إطار عمل أو جهاز) ليكون موجودًا. يتم تمييز إدخالات HAL بواسطة عنصر
<name>
؛ يمكن أن يكون هناك العديد من إدخالات HAL بنفس الاسم (تشير إلى "و" الشرط). -
compatibility-matrix.hal.format
- اختياري. يمكن أن تكون القيمة واحدة مما يلي:
-
"hidl"
: HIDL HALs. هذا هو الافتراضي. -
"aidl"
: AIDL HALs . صالح فقط على مصفوفة التوافق الإصدار الفوقية 2.0. -
"native"
: HALs أصلية.
-
-
compatibility-matrix.hal.optional
- السمة اختيارية والافتراضيات على خطأ. يوضح ما إذا كان HAL هذا اختياريًا لمالك مصفوفة التوافق (إطار عمل أو جهاز). إذا تم وضع علامة على الإدخال
<hal>
على أنه اختياري ، فهذا يعني أن المالك يمكنه العمل مع HAL هذا ، إذا كان موجودًا ، ولكنه لا يتطلب أن يكون موجودًا. -
compatibility-matrix.hal.name
- مطلوب. اسم الحزمة الكامل لهذا HAL. أمثلة:
-
android.hardware.camera
(HIDL أو AIDL HAL) -
GLES
(أصلي HAL ، يتطلب الاسم فقط)
-
-
compatibility-matrix.hal.version
- قائمة نطاقات الإصدارات (راجع HAL مطابقة ) التي تحدد الإصدارات التي يتوقعها مالك مصفوفة التوافق (إطار عمل أو جهاز).
بالنسبة لـ HIDL و HALs الأصلية ، المطلوبة ، يمكن التكرار بدون تكرارات. التنسيق هو واحد مما يلي:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(ما يعادلMAJOR . MINOR - MINOR
)
بالنسبة إلى AIDL HALs ، يجب ألا تكون موجودة على الأجهزة التي تعمل بنظام Android 11 والإصدارات الأقدم. اختياري على الأجهزة التي تعمل بإصدارات أحدث. إذا تم تحديد التنسيق ، فهو واحد مما يلي:-
VERSION_MIN - VERSION_MAX
-
VERSION
(ما يعادلVERSION - VERSION
)
1
. -
-
compatibility-matrix.hal.interface
- اختياري ، يمكن أن تكرر. قائمة بالواجهات المطلوبة من HAL.
-
compatibility-matrix.hal.interface.name
- مطلوب. اسم الواجهة.
-
compatibility-matrix.hal.interface.instance
- اختياري ، يمكن أن تكرر. قائمة بالمثيلات المطلوبة لهذه الواجهة.
-
compatibility-matrix.hal.interface.regex-instance
- اختياري ، يمكن أن تكرر. قائمة أنماط اسم المثيل المطلوبة على هذه الواجهة. استخدم تنسيق Extended Regular Expression .
-
compatibility-matrix.kernel
- اختياري ، يمكن أن تكرر. حدد قائمة بتكوينات kernel التي يتطلبها إطار العمل في كل إصدار من إصدارات kernel.
يمكن أن توجد عدة<kernel>
لها نفس<version>
للإشارة إلى علاقة "و". كل<kernel>
هو "جزء" من المتطلبات التي يتم تمكينها فقط عند<conditions>
. -
compatibility-matrix.kernel.version
- مطلوب. إصدار النواة. التنسيق هو
VERSION . MAJOR_REVISION . MINOR_REVISION
. يجب أن يتطابق الإصدار والمراجعة الرئيسية تمامًا. مراجعة ثانوية تحدد الحد الأدنى لإصدار LTS من kernel الذي يتوقعه إطار العمل. -
compatibility-matrix.kernel.condition
- اختياري. يجب ألا يكون موجودًا لأول
<kernel>
من كل إصدار. يحدد قائمة الشروط. عند استيفاء الشروط ، يتم تمكين المتطلبات المذكورة في جزء<kernel>
هذا. -
compatibility-matrix.kernel.config
- اختياري ، يمكن أن تكرر. يسرد عناصر
CONFIG
التي يجب مطابقتها لإصدار kernel هذا. كل عنصر من عناصرCONFIG
عبارة عن زوج ذي قيمة رئيسية ؛ يتم تمييز عناصر التكوين بواسطة المفتاح. -
compatibility-matrix.kernel.config.key
- مطلوب. الاسم الأساسي لعنصر
CONFIG
. يبدأ بـCONFIG_
. -
compatibility-matrix.kernel.config.value
- مطلوب. قيمة عنصر
CONFIG
. يعتمد التنسيق على النوع:-
string
. تم حذف الاقتباسات. -
int
. يتم قبول القيم العشرية والسداسية العشرية (يجب أن تبدأ بـ0x
أو0X)
. يتم تفسيره على أنه عدد صحيح 64 بت ؛ الفيضانات تؤدي إلى الاقتطاع. (يقبل المحلل اللغوي القيم من -2 64 + 1 إلى 2 64-1 ، يتم اقتطاع 65 بت ؛ لمزيد من التفاصيل راجع صفحة الدليل strtoull .) -
range
. التنسيق هو[int]-[int]
، على سبيل المثال10-20
. يتم قبول القيم السداسية العشرية ويجب أن تبدأ بـ0x
أو0X
. يجب أن يكون الحدان عددًا صحيحًا 64 بت بدون إشارة. -
tristate
. القيم الصالحة هيy
وm
وn
.
-
-
compatibility-matrix.kernel.config.value.type
- مطلوب. نوع قيمة عنصر
CONFIG
، أحد:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- مطلوب. يحتوي على جميع الإدخالات المتعلقة بالسياسة. تستخدم فقط من خلال مصفوفة توافق الإطار.
-
compatibility-matrix.sepolicy.sepolicy-version
- مطلوب ، يمكن أن يكرر. يصف المتطلبات الموجودة في إصدار التأمين. يتوافق مع الإصدار
manifest.sepolicy.version
. يحدد كل مثيل لعنصر مجموعة من إصدارات منفصلة. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- مطلوب. يعلن عن إصدار
policydb
الذي يعمل به إطار العمل. -
compatibility-matrix.avb.vbmeta-version
- اختياري؛ تستخدم فقط من خلال مصفوفة توافق الإطار. تعلن عن إصدار AVB المستخدم للتوقيع على
system.img
. موقوف في Android 10. -
compatibility-matrix.vendor-ndk
- اختياري؛ تستخدم فقط من خلال مصفوفة توافق الجهاز. يعلن عن متطلبات لقطة بائع VNDK. إذا كانت مفقودة ، فلن يتم وضع متطلبات VNDK على صورة النظام.
-
compatibility-matrix.vendor-ndk.version
- مطلوب. عدد صحيح موجب يعلن عن إصدار VNDK المطلوب بواسطة صورة البائع.
-
compatibility-matrix.vendor-ndk.library
- اختياري ، يمكن أن تكرر. يعلن عن مجموعة من مكتبات VNDK التي تتطلبها صورة البائع. نفس الدلالات مثل
manifest.vendor-ndk.library
. -
compatibility-matrix.system-sdk.version
- اختياري ، يمكن أن تكرر ؛ تستخدم فقط من خلال مصفوفة توافق الجهاز. تعلن عن متطلبات تطبيقات البائع على إصدارات System SDK. إذا كانت مفقودة ، فلن يتم وضع متطلبات System SDK على صورة النظام.