संगतता मैट्रिक्स

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

यह खंड फ्रेमवर्क और डिवाइस संगतता मैट्रिक्स और संगतता मैट्रिक्स स्कीमा का वर्णन करता है। मैच के नियमों के लिए, मैचिंग रूल्स देखें।

फ्रेमवर्क संगतता मैट्रिक्स (FCM)

फ़्रेमवर्क संगतता मैट्रिक्स (FCM) उस डिवाइस पर फ़्रेमवर्क की आवश्यकताओं का वर्णन करता है जिस पर वह चलता है। फ्रेमवर्क संगतता मैट्रिक्स में सिस्टम संगतता मैट्रिक्स, उत्पाद संगतता मैट्रिक्स और system_ext संगतता मैट्रिक्स शामिल हैं। FCM की आवश्यकताओं को डिवाइस मेनिफेस्ट (निर्माण समय, रनटाइम और VTS में लागू की गई आवश्यकताएं) से संतुष्ट होना चाहिए।

System_ext FCM और उत्पाद FCM डिवाइस-विशिष्ट FCM (सिस्टम विभाजन में स्थापित) के पूरक हैं।

  • डिवाइस FCM को सिस्टम विभाजन में मॉड्यूल की आवश्यकताओं को प्रतिबिंबित करना चाहिए।
  • system_ext FCM को system_ext विभाजन में मॉड्यूल द्वारा आवश्यकताओं को प्रतिबिंबित करना चाहिए।
  • उत्पाद FCM को उत्पाद विभाजन में मॉड्यूल द्वारा आवश्यकताओं को प्रतिबिंबित करना चाहिए।

सभी FCM को सिस्टम, उत्पाद, और system_ext विभाजनों के ढांचे में OEM के संशोधनों के साथ संरेखित करना चाहिए। उदाहरण के लिए, यदि उत्पाद विभाजन में स्थापित कोई ऐप HAL इंटरफ़ेस के विक्रेता एक्सटेंशन का उपयोग करता है, तो उत्पाद FCM में HAL इंटरफ़ेस आवश्यकता घोषित की जानी चाहिए।

उदाहरण सिस्टम संगतता मैट्रिक्स फ़ाइल:

<?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 के साथ उत्पाद FCM और रनटाइम पर 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 संगतता मैट्रिक्स

system_ext FCM system_ext विभाजन में एक फ्रेमवर्क संगतता मैट्रिक्स फ़ाइल है। VINTF ऑब्जेक्ट सिस्टम में FCM के साथ system_ext FCM और रनटाइम पर उत्पाद विभाजन से जुड़ता है। एक उदाहरण system_ext FCM फ़ाइल के लिए उत्पाद संगतता मैट्रिक्स देखें।

डिवाइस संगतता मैट्रिक्स (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 टैग्स के अर्थ का वर्णन करता है। एंड्रॉइड सोर्स ट्री में सोर्स फाइल से कुछ "आवश्यक" टैग गायब हो सकते हैं और बिल्ड टाइम पर assemble_vintf द्वारा लिखे गए हैं। डिवाइस पर संबंधित फाइलों में "आवश्यक" टैग मौजूद होना चाहिए।

?xml
वैकल्पिक। यह केवल XML पार्सर को जानकारी प्रदान करता है।
compatibility-matrix.version
आवश्यक। इस संगतता मैट्रिक्स का मेटा-संस्करण। संगतता मैट्रिक्स में अपेक्षित तत्वों का वर्णन करता है। एक्सएमएल संस्करण से असंबंधित।
compatibility-matrix.type
आवश्यक। इस संगतता मैट्रिक्स का प्रकार:
  • "device" : डिवाइस संगतता मैट्रिक्स।
  • "framework" : फ्रेमवर्क संगतता मैट्रिक्स।
manifest.level
फ्रेमवर्क संगतता मैट्रिक्स के लिए आवश्यक। Android 12 और उच्चतर में, उत्पाद और system_ext विभाजनों में फ्रेमवर्क संगतता मैट्रिक्स फ़ाइलों में अनुमत है। इस फ़ाइल के फ्रेमवर्क संगतता मैट्रिक्स संस्करण (FCM संस्करण) को निर्दिष्ट करता है। इसे डिवाइस-विशिष्ट फ्रेमवर्क संगतता मैट्रिक्स (यानी DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE ) में घोषित न करें।
compatibility-matrix.hal
वैकल्पिक और दोहरा सकते हैं। एक एकल एचएएल (एचआईडीएल या देशी) को सूचीबद्ध करता है जो कि संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक द्वारा उपस्थित होने के लिए आवश्यक है। एचएएल प्रविष्टियां <name> तत्व द्वारा प्रतिष्ठित हैं; एक ही नाम के साथ कई एचएएल प्रविष्टियां हो सकती हैं (अर्थात "और" शर्त)।
compatibility-matrix.hal.format
वैकल्पिक। मान इनमें से एक हो सकता है:
  • "hidl" : एचआईडीएल एचएएल। यह डिफ़ॉल्ट है।
  • "aidl" : एआईडीएल एचएएल । केवल संगतता मैट्रिक्स मेटा-संस्करण 2.0 पर मान्य है।
  • "native" : देशी एचएएल।
compatibility-matrix.hal.optional
विशेषता वैकल्पिक है और डिफ़ॉल्ट रूप से गलत है। बताता है कि क्या यह एचएएल संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक के लिए वैकल्पिक है। यदि एक <hal> प्रविष्टि को वैकल्पिक के रूप में चिह्नित किया गया है, तो इसका मतलब है कि मालिक इस HAL के साथ काम कर सकता है, यदि वह मौजूद है, लेकिन उसके उपस्थित होने की आवश्यकता नहीं है।
compatibility-matrix.hal.name
आवश्यक। इस एचएएल का पूरा पैकेज नाम। उदाहरण:
  • android.hardware.camera (HIDL या AIDL HAL)
  • GLES (मूल HAL, केवल नाम की आवश्यकता है)
compatibility-matrix.hal.version
संस्करण श्रेणियों की एक सूची (देखें एचएएल मैच ) जो परिभाषित करती है कि संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक को किन संस्करणों की अपेक्षा है।

एचआईडीएल और देशी एचएएल के लिए, आवश्यक, डुप्लिकेट के बिना दोहरा सकते हैं। प्रारूप निम्न में से एक है:
  • MAJOR . MINOR_MIN - MINOR_MAX
  • MAJOR . MINOR ( MAJOR . MINOR - MINOR )

एआईडीएल एचएएल के लिए, Android 11 और उसके बाद के संस्करण चलाने वाले उपकरणों पर मौजूद नहीं होना चाहिए। बाद के संस्करण चलाने वाले उपकरणों पर वैकल्पिक। यदि निर्दिष्ट किया गया है, तो प्रारूप निम्न में से एक है:
  • VERSION_MIN - VERSION_MAX
  • VERSION ( VERSION - VERSION के बराबर)
यदि निर्दिष्ट नहीं है, तो मान डिफ़ॉल्ट रूप से 1 हो जाता है।
compatibility-matrix.hal.interface
वैकल्पिक, दोहरा सकते हैं। इस एचएएल के आवश्यक इंटरफेस की एक सूची।
compatibility-matrix.hal.interface.name
आवश्यक। इंटरफ़ेस का नाम।
compatibility-matrix.hal.interface.instance
वैकल्पिक, दोहरा सकते हैं। इस इंटरफ़ेस के आवश्यक उदाहरणों की एक सूची।
compatibility-matrix.hal.interface.regex-instance
वैकल्पिक, दोहरा सकते हैं। इस इंटरफ़ेस पर आवश्यक इंस्टेंस नाम पैटर्न की एक सूची। विस्तारित नियमित अभिव्यक्ति प्रारूप का प्रयोग करें।
compatibility-matrix.kernel
वैकल्पिक, दोहरा सकते हैं। कर्नेल कॉन्फिग की एक सूची निर्दिष्ट करें कि फ्रेमवर्क को प्रत्येक कर्नेल संस्करण पर आवश्यकता होती है।
एकाधिक <kernel> एक ही <version> के साथ "और" संबंध को इंगित करने के लिए मौजूद हो सकते हैं। प्रत्येक <kernel> आवश्यकताओं का एक "टुकड़ा" है जो केवल तभी सक्षम होता है जब <conditions> पूरी होती हैं।
compatibility-matrix.kernel.version
आवश्यक। कर्नेल संस्करण। प्रारूप VERSION . MAJOR_REVISION . MINOR_REVISION । संस्करण और प्रमुख संशोधन बिल्कुल मेल खाना चाहिए। मामूली संशोधन कर्नेल के न्यूनतम एलटीएस संस्करण को परिभाषित करता है जिसकी रूपरेखा अपेक्षा करती है।
compatibility-matrix.kernel.condition
वैकल्पिक। प्रत्येक संस्करण के पहले <kernel> के लिए मौजूद नहीं होना चाहिए। शर्तों की एक सूची निर्दिष्ट करता है। केवल जब शर्तें पूरी होती हैं तो इस <kernel> खंड में बताई गई आवश्यकताएं सक्षम होती हैं।
compatibility-matrix.kernel.config
वैकल्पिक, दोहरा सकते हैं। CONFIG आइटम को सूचीबद्ध करता है जो इस कर्नेल संस्करण के लिए मेल खाना चाहिए। प्रत्येक CONFIG आइटम एक कुंजी-मान युग्म है; 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 वें बिट को छोटा कर दिया जाता है; विवरण के लिए स्ट्रेटोल मैन पेज देखें।)
  • 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
वैकल्पिक; केवल फ्रेमवर्क संगतता मैट्रिक्स द्वारा उपयोग किया जाता है। system.img पर हस्ताक्षर करने के लिए प्रयुक्त AVB संस्करण की घोषणा करता है। एंड्रॉइड 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
वैकल्पिक, दोहरा सकते हैं; केवल डिवाइस संगतता मैट्रिक्स द्वारा उपयोग किया जाता है। सिस्टम एसडीके संस्करणों पर विक्रेता ऐप्स द्वारा आवश्यकता की घोषणा करता है। यदि अनुपलब्ध है, तो सिस्टम छवि पर सिस्टम SDK की कोई आवश्यकता नहीं है।