مصفوفات التوافق

يصف هذا القسم مصفوفات إطار العمل ومصفوفات توافق الأجهزة، مخطط مصفوفة التوافق. بالنسبة قواعد المطابقة، راجع المطابقة القواعد:

مصفوفة توافق إطار العمل (FCM)

تصف مصفوفة توافق إطار العمل (FCM) متطلبات إطار العمل على الجهاز الذي يعمل عليه تتكون مصفوفة توافق إطار العمل من النظام ومصفوفة التوافق ومصفوفة توافق المنتجات ومصفوفة توافق نظام_ext. يجب استيفاء متطلبات خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" من خلال بيان الجهاز (المتطلبات ويتم فرضها في وقت الإصدار ووقت التشغيل وفي VTS).

تعتبر ميزتا "المراسلة عبر السحابة الإلكترونية من Firebase" و"المراسلة عبر السحابة الإلكترونية من Firebase" للمنتج مكمّلين لميزة "المراسلة عبر السحابة الإلكترونية من Firebase" الخاصة بالجهاز (مثبتتَين. في قسم النظام).

  • يجب أن تعكس خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للأجهزة متطلبات الوحدات في قسم النظام.
  • ويجب أن تعكس ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" في system_ext المتطلّبات حسب الوحدات في القسم system_ext.
  • يجب أن تعكس خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للمنتج المتطلبات حسب الوحدات product number (قسم المنتج).

يجب أن تتوافق جميع "المراسلة عبر السحابة الإلكترونية من Firebase" مع تعديلات المصنّع الأصلي للجهاز على إطار العمل في النظام والمنتج وأقسام System_ext. على سبيل المثال، إذا كان تطبيق مثبّت في قسم المنتج يستخدم إضافة مورّد لأي واجهة من واجهات HAL، يجب الإعلان عن متطلبات واجهة HAL في عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".

مثال على ملف مصفوفة توافق النظام:

<?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>

لمزيد من التفاصيل، يُرجى الاطّلاع على "المراسلة عبر السحابة الإلكترونية من Firebase" مراحل النشاط:

مصفوفة توافق المنتجات

خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للمنتج هي عبارة عن ملف مصفوفة توافق ضمن إطار العمل في المنتج قسم القرص. عنصر VINTF ينضم إلى المنتج "المراسلة عبر السحابة الإلكترونية من Firebase" مع ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" في النظام وsystem_ext الأقسام المختلفة في وقت التشغيل.

مثال على ملف "المراسلة عبر السحابة الإلكترونية من Firebase" للمنتجات:

<?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

system_ext FCM هو ملف مصفوفة توافق ضمن إطار العمل في System_ext قسم القرص. عنصر VINTF ينضم إلى System_ext FCM مع FCM في النظام والمنتج الأقسام المختلفة في وقت التشغيل. الاطّلاع على مصفوفة توافق المنتجات للحصول على مثال لملف System_ext FCM.

مصفوفة توافق الأجهزة (DCM)

تصف مصفوفة توافق الجهاز مجموعة من المتطلبات التي يجب أن يستوفيها الجهاز يمكن توقّعه من إطار العمل (المتطلبات التي يتم فرضها عند الإطلاق ووقت التحديث عبر الهواء).

مثال على ملف 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 والإصدارات الأحدث، مسموح به في ملفات مصفوفة التوافق مع إطار العمل في أقسام product وsystem_ext. تحدِّد هذه السياسة إصدار مصفوفة توافق إطار العمل (إصدار FCM) من هذا الملف. عدم الإفصاح عن ذلك في مصفوفة توافق إطار العمل الخاص بالجهاز (أي DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE).
compatibility-matrix.hal
اختياري ويمكن تكراره. يسرد محتوى HAL واحد (HIDL أو مدمج مع المحتوى) يتطلبه مالك مصفوفة التوافق (إطار العمل أو الجهاز) حاليًا. يتمّ تمييز إدخالات HAL بالعنصر <name>، يمكن أن يكون هناك العديد من إدخالات HAL التي تحمل الاسم نفسه (يعني ذلك "و" الشرط).
compatibility-matrix.hal.format
اختياري. يمكن أن تكون القيمة واحدة مما يلي:
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
يمكن التكرار اختياريًا. قائمة بأنماط أسماء المثيلات المطلوبة على هذا من واجهة pyplot. استخدام الموسع تنسيق التعبير العادي
compatibility-matrix.kernel
يمكن التكرار اختياريًا. تحديد قائمة بتكوينات النواة التي يستخدمها إطار العمل يتطلبها كل إصدار من إصدارات النواة.
يمكن لـ <kernel> متعددة التي لها <version> نفسها موجودة للإشارة إلى "و" العلاقة. كل <kernel> هو "جزء" من المتطلبات التي يتم تفعيلها فقط عند استخدام <conditions>
compatibility-matrix.kernel.version
يجب ملء الحقل. إصدار النواة. التنسيق هو VERSION.MAJOR_REVISION.MINOR_REVISION يجب أن يتطابق الإصدار والنسخة الرئيسية تمامًا. تحدد المراجعة الثانوية الحد الأدنى من إصدار قناة الدعم الطويل الأمد (LTS) الذي يتوقعه إطار العمل.
compatibility-matrix.kernel.condition
اختياري. يجب ألا توجد في أول <kernel> من كل منها . تُحدِّد هذه السياسة قائمة بالشروط. عندما يتم استيفاء الشروط، تم تفعيل المتطلبات المذكورة في جزء <kernel> هذا.
compatibility-matrix.kernel.config
يمكن التكرار اختياريًا. يسرد CONFIG عنصر يجب مطابقة لإصدار النواة هذا. كل عنصر CONFIG عبارة عن مفتاح/قيمة زوج يتم تمييز عناصر الضبط بالمفتاح.
compatibility-matrix.kernel.config.key
يجب ملء الحقل. الاسم الرئيسي للعنصر CONFIG تبدأ بـ CONFIG_
compatibility-matrix.kernel.config.value
يجب ملء الحقل. قيمة العنصر CONFIG يعتمد التنسيق على النوع:
  • string تم حذف علامات الاقتباس.
  • int النظام العشري والسداسي العشري (يجب أن يبدأ بـ 0x) أو 0X)تم قبول القيم. تفسيره كعدد صحيح 64 بت؛ تؤدي التجاوزات إلى اقتطاع. (يقبل المحلل اللغوي القيم من -264 + 1 إلى 264 - 1، يتم اقتطاع البت 65؛ للحصول على التفاصيل، يُرجى الرجوع إلى سترتول الفيديو).
  • 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
يجب ملء الحقل. يحتوي على جميع الإدخالات المتعلقة بسياسة sepolicy. لا يتم استخدامه إلا من قِبل مصفوفة توافق إطار العمل
compatibility-matrix.sepolicy.sepolicy-version
مطلوب، يمكن تكراره. يصف متطلبات إصدار sepolicy. يتوافق مع manifest.sepolicy.version. كل مثيل من مجموعة من إصدارات sepolicy.
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. في حال عدم توفّر حزمة SDK للنظام على صورة النظام.