ModuleMetadata मॉड्यूल में, किसी डिवाइस पर मौजूद मॉड्यूल की सूची के बारे में मेटाडेटा होता है. सिस्टम सर्वर के शुरू होते ही, मेटाडेटा को पार्स और कैश किया जाता है.
Android 10 में हुए बदलाव
ModuleMetadata APK में ModuleInfoProvider शामिल है. यह PackageManager के API से getModuleInfo और getInstalledModules तरीकों को लागू करता है. ये तरीके, मॉड्यूल मेटाडेटा उपलब्ध कराने वाले पैकेज से पार्स किए गए एक्सएमएल मेटाडेटा पर आधारित होते हैं. मॉड्यूल मेटाडेटा पैकेज का पैकेज नेम, config_defaultModuleMetadataProvider कॉन्फ़िगरेशन वैल्यू में सेव होता है.
मॉड्यूल मेटाडेटा देने वाले को, अपने <application> टैग के लिए <metadata> एंट्री शामिल करनी होगी. मेटाडेटा एंट्री में एक ही कुंजी (android.content.pm.MODULE_METADATA) होनी चाहिए. इसकी वैल्यू, एक्सएमएल संसाधन का रेफ़रंस होती है. इस संसाधन में, किसी डिवाइस पर मौजूद मॉड्यूल की सूची के बारे में मेटाडेटा होता है.
पैकेज का फ़ॉर्मैट
ModuleMetadata मॉड्यूल (com.android.modulemetadata) को APK फ़ाइल के तौर पर डिलीवर किया जाता है.
मेटाडेटा एलिमेंट
XML दस्तावेज़ में, टॉप लेवल का एक <module-metadata>
एलिमेंट होना चाहिए. साथ ही, उसमें एक या उससे ज़्यादा चाइल्ड एलिमेंट होने चाहिए. हर चाइल्ड, एक <module> एलिमेंट होता है. इसमें ये एट्रिब्यूट शामिल होते हैं:
name, उपयोगकर्ता को दिखने वाले पैकेज के नाम का संसाधन रेफ़रंस है.ModuleInfo#getNameपर मैप करता है.packageName, मॉड्यूल का पैकेज नाम है.ModuleInfo#getPackageNameपर मैप करता है.isHiddenसे पता चलता है कि मॉड्यूल छिपा हुआ है या नहीं. मैप्स टूModuleInfo#isHidden</code>.
उदाहरण:
<module-metadata>
<module name="@string/resource" packageName="package_name" isHidden="false|true">
<module .... >
</module-metadata>