यह अनुभाग फ़्रेमवर्क और डिवाइस संगतता मैट्रिक्स और संगतता मैट्रिक्स स्कीमा का वर्णन करता है। मिलान नियमों के लिए, मिलान नियम देखें।
फ्रेमवर्क संगतता मैट्रिक्स (एफसीएम)
फ्रेमवर्क कम्पैटिबिलिटी मैट्रिक्स (एफसीएम) उस डिवाइस पर फ्रेमवर्क की आवश्यकताओं का वर्णन करता है जिस पर यह चलता है। फ़्रेमवर्क संगतता मैट्रिक्स में सिस्टम संगतता मैट्रिक्स, उत्पाद संगतता मैट्रिक्स और system_ext संगतता मैट्रिक्स शामिल हैं। एफसीएम की आवश्यकताओं को डिवाइस मेनिफेस्ट (निर्माण समय, रनटाइम और वीटीएस में लागू आवश्यकताएं) से संतुष्ट होना चाहिए।
system_ext FCM और उत्पाद FCM डिवाइस-विशिष्ट FCM (सिस्टम विभाजन में स्थापित) के पूरक हैं।
- डिवाइस एफसीएम को सिस्टम विभाजन में मॉड्यूल की आवश्यकताओं को प्रतिबिंबित करना चाहिए।
- System_ext FCM को system_ext विभाजन में मॉड्यूल द्वारा आवश्यकताओं को प्रतिबिंबित करना चाहिए।
- उत्पाद एफसीएम को उत्पाद विभाजन में मॉड्यूल द्वारा आवश्यकताओं को प्रतिबिंबित करना चाहिए।
सभी एफसीएम को सिस्टम, उत्पाद और सिस्टम_एक्सटी विभाजन में ढांचे के लिए ओईएम के संशोधनों के साथ संरेखित होना चाहिए। उदाहरण के लिए, यदि उत्पाद विभाजन में स्थापित कोई ऐप एचएएल इंटरफ़ेस के विक्रेता एक्सटेंशन का उपयोग करता है, तो एचएएल इंटरफ़ेस आवश्यकता को उत्पाद एफसीएम में घोषित किया जाना चाहिए।
उदाहरण सिस्टम संगतता मैट्रिक्स फ़ाइल:
<?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 ऑब्जेक्ट रनटाइम पर सिस्टम में FCMs और system_ext विभाजन के साथ उत्पाद FCM से जुड़ता है।
उदाहरण उत्पाद 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 ऑब्जेक्ट रनटाइम पर सिस्टम और उत्पाद विभाजन में FCMs के साथ system_ext FCM से जुड़ता है। उदाहरण system_ext FCM फ़ाइल के लिए उत्पाद संगतता मैट्रिक्स देखें।
डिवाइस संगतता मैट्रिक्स (डीसीएम)
डिवाइस संगतता मैट्रिक्स आवश्यकताओं के एक सेट का वर्णन करता है जो डिवाइस फ्रेमवर्क से अपेक्षा करता है (लॉन्च और ओटीए समय पर लागू आवश्यकताएं)।
उदाहरण डीसीएम फ़ाइल:
<?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
- आवश्यक। इस संगतता मैट्रिक्स का मेटा-संस्करण। संगतता मैट्रिक्स में अपेक्षित तत्वों का वर्णन करता है। XML संस्करण से असंबंधित.
-
compatibility-matrix.type
- आवश्यक। इस अनुकूलता मैट्रिक्स का प्रकार:
-
"device"
: डिवाइस संगतता मैट्रिक्स। -
"framework"
: फ्रेमवर्क अनुकूलता मैट्रिक्स।
-
-
manifest.level
- फ़्रेमवर्क अनुकूलता मैट्रिक्स के लिए आवश्यक. एंड्रॉइड 12 और उच्चतर में, उत्पाद और system_ext विभाजन में फ्रेमवर्क संगतता मैट्रिक्स फ़ाइलों की अनुमति है। इस फ़ाइल का फ़्रेमवर्क संगतता मैट्रिक्स संस्करण (FCM संस्करण) निर्दिष्ट करता है। इसे डिवाइस-विशिष्ट फ्रेमवर्क संगतता मैट्रिक्स (यानी
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
) में घोषित न करें। -
compatibility-matrix.hal
- वैकल्पिक और दोहराया जा सकता है. एक एकल एचएएल (एचआईडीएल या मूल) को सूचीबद्ध करता है जिसे संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक द्वारा उपस्थित होना आवश्यक है। एचएएल प्रविष्टियाँ एक
<name>
तत्व द्वारा भिन्न होती हैं; एक ही नाम से कई एचएएल प्रविष्टियाँ हो सकती हैं (इसका तात्पर्य "और" स्थिति से है)। -
compatibility-matrix.hal.format
- वैकल्पिक। मान इनमें से एक हो सकता है:
-
"hidl"
: HIDL HALs. यह डिफ़ॉल्ट है. -
"aidl"
: एआईडीएल एचएएल । केवल संगतता मैट्रिक्स मेटा-संस्करण 2.0 पर मान्य है। -
"native"
: देशी एचएएल।
-
-
compatibility-matrix.hal.optional
- विशेषता वैकल्पिक है और डिफ़ॉल्ट रूप से गलत है। बताता है कि क्या यह एचएएल संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक के लिए वैकल्पिक है। यदि
<hal>
प्रविष्टि को वैकल्पिक के रूप में चिह्नित किया गया है, तो इसका मतलब है कि मालिक इस HAL के साथ काम कर सकता है, यदि वह मौजूद है, लेकिन उसे मौजूद रहने की आवश्यकता नहीं है। -
compatibility-matrix.hal.name
- आवश्यक। इस HAL का पूरा पैकेज नाम. उदाहरण:
-
android.hardware.camera
(HIDL या AIDL HAL) -
GLES
(मूल एचएएल, केवल नाम की आवश्यकता है)
-
-
compatibility-matrix.hal.version
- संस्करण श्रेणियों की एक सूची ( एचएएल मिलान देखें) जो परिभाषित करती है कि संगतता मैट्रिक्स (फ्रेमवर्क या डिवाइस) के मालिक को कौन से संस्करण की उम्मीद है।
एचआईडीएल और मूल एचएएल के लिए, आवश्यक, डुप्लिकेट के बिना दोहराया जा सकता है। प्रारूप निम्न में से एक है:-
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
- वैकल्पिक, दोहरा सकते हैं. इस एचएएल के लिए आवश्यक इंटरफेस की एक सूची।
-
compatibility-matrix.hal.interface.name
- आवश्यक। इंटरफ़ेस का नाम.
-
compatibility-matrix.hal.interface.instance
- वैकल्पिक, दोहरा सकते हैं. इस इंटरफ़ेस के आवश्यक उदाहरणों की एक सूची।
-
compatibility-matrix.hal.interface.regex-instance
- वैकल्पिक, दोहरा सकते हैं. इस इंटरफ़ेस पर आवश्यक इंस्टेंस नाम पैटर्न की एक सूची। विस्तारित नियमित अभिव्यक्ति प्रारूप का उपयोग करें।
-
compatibility-matrix.kernel
- वैकल्पिक, दोहरा सकते हैं. कर्नेल कॉन्फ़िगरेशन की एक सूची निर्दिष्ट करें जिसकी फ्रेमवर्क को प्रत्येक कर्नेल संस्करण पर आवश्यकता होती है।
समान<version>
के साथ एकाधिक<kernel>
"और" संबंध दर्शाने के लिए मौजूद हो सकते हैं। प्रत्येक<kernel>
आवश्यकताओं का एक "टुकड़ा" है जो केवल तभी सक्षम होता है जब<conditions>
पूरी होती हैं। -
compatibility-matrix.kernel.version
- आवश्यक। कर्नेल संस्करण. प्रारूप
VERSION . MAJOR_REVISION . MINOR_REVISION
। संस्करण और प्रमुख संशोधन बिल्कुल मेल खाने चाहिए। मामूली संशोधन फ्रेमवर्क द्वारा अपेक्षित कर्नेल के न्यूनतम एलटीएस संस्करण को परिभाषित करता है। -
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-बिट पूर्णांक के रूप में व्याख्या की गई; अतिप्रवाह के परिणामस्वरूप कटाव होता है। (पार्सर -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
- आवश्यक। इसमें सेपॉलिसी से संबंधित सभी प्रविष्टियाँ शामिल हैं। केवल फ़्रेमवर्क संगतता मैट्रिक्स द्वारा उपयोग किया जाता है।
-
compatibility-matrix.sepolicy.sepolicy-version
- आवश्यक है, दोहरा सकते हैं. सेपॉलिसी संस्करण पर आवश्यकता का वर्णन करता है।
manifest.sepolicy.version
से मेल खाता है। किसी तत्व का प्रत्येक उदाहरण सेपॉलिसी संस्करणों की एक श्रृंखला को परिभाषित करता है। -
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 आवश्यकता नहीं बनाई गई है।