ModuleMetadata मॉड्यूल में, किसी डिवाइस पर मौजूद मॉड्यूल की सूची का मेटाडेटा होता है. सिस्टम सर्वर शुरू होते ही, मेटाडेटा को पार्स और कैश मेमोरी में सेव किया जाता है.
Android 10 में हुए बदलाव
ModuleMetadata APK में ModuleInfoProvider
शामिल होता है, जो PackageManager के API से getModuleInfo
और getInstalledModules
तरीकों को लागू करता है. इन तरीकों के पीछे, मेटाडेटा की सेवा देने वाली कंपनी के पैकेज से पार्स किए गए एक्सएमएल मेटाडेटा का इस्तेमाल किया जाता है. मॉड्यूल मेटाडेटा पैकेज के लिए पैकेज का नाम, config_defaultModuleMetadataProvider
कॉन्फ़िगरेशन वैल्यू में सेव होता है.
मॉड्यूल मेटाडेटा की सेवा देने वाली कंपनी के पास, अपने <application>
टैग के लिए <metadata>
एंट्री होनी चाहिए. मेटाडेटा एंट्री में एक ही कुंजी (android.content.pm.MODULE_METADATA
) होनी चाहिए, जिसकी वैल्यू किसी ऐसे एक्सएमएल रिसॉर्स का रेफ़रंस हो जिसमें किसी डिवाइस पर मौजूद मॉड्यूल की सूची का मेटाडेटा हो.
पैकेज का फ़ॉर्मैट
ModuleMetadata मॉड्यूल (com.android.modulemetadata
) को APK फ़ाइल के तौर पर डिलीवर किया जाता है.
मेटाडेटा एलिमेंट
एक्सएमएल दस्तावेज़ में, एक या उससे ज़्यादा चाइल्ड एलिमेंट वाला एक टॉप लेवल <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>