मल्टीडेक्स के बारे में कई पोस्ट हैं। मैंने अपने बिल्ड.ग्रेड multiDexEnabled true
के defaultConfig
अनुभाग सहित कई बार अनुभव किया है ।
लेकिन, वास्तव में यह विशेषता क्या है? इसका उपयोग करने के लिए परिदृश्य क्या हैं?
मल्टीडेक्स के बारे में कई पोस्ट हैं। मैंने अपने बिल्ड.ग्रेड multiDexEnabled true
के defaultConfig
अनुभाग सहित कई बार अनुभव किया है ।
लेकिन, वास्तव में यह विशेषता क्या है? इसका उपयोग करने के लिए परिदृश्य क्या हैं?
जवाबों:
दस्तावेज का हवाला देते हुए :
एंड्रॉइड एप्लिकेशन (एपीके) फाइलों में डाल्विक एक्सेसेबल (डीईएक्स) फाइलों के रूप में निष्पादन योग्य बायटेकोड फाइलें होती हैं, जिसमें आपके ऐप को चलाने के लिए उपयोग किए गए संकलित कोड होते हैं। Dalvik निष्पादन योग्य विनिर्देश उन तरीकों की कुल संख्या को सीमित करता है जिन्हें किसी एकल DEX फ़ाइल में 65,536 में संदर्भित किया जा सकता है, जिसमें Android फ्रेमवर्क विधियाँ, लाइब्रेरी विधियाँ, और आपके अपने कोड में विधियाँ शामिल हैं। इस सीमा को पार करने के लिए आवश्यक है कि आप एक मल्टीडेक्स कॉन्फ़िगरेशन के रूप में जानी जाने वाली एक से अधिक डीएक्स फ़ाइल बनाने के लिए अपनी ऐप बिल्ड प्रक्रिया को कॉन्फ़िगर करें।
तो, सुविधा यह है: यह आपके जटिल एप्लिकेशन को संकलित करने की अनुमति देता है। इसका उपयोग करने के लिए परिदृश्य तब होते हैं जब आपका ऐप 64K DEX विधि संदर्भ सीमा से टकराने के कारण संकलन करने में विफल रहता है। यह एक बिल्ड त्रुटि के रूप में प्रकट होता है, जैसे:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
एकल .dex फ़ाइल में 65,536 विधियाँ (संदर्भ) हो सकती हैं, इसलिए यदि संदर्भों की संख्या 65,536 से अधिक है, तो आप मल्टीफ़ैक्स के साथ जाते हैं।
एक एंड्रॉइड एप्लिकेशन प्रोग्राम को एक .dex फ़ाइल में संकलित किया जाता है जो बदले में एक .apk फ़ाइल में ज़िपित होता है।
DVM (Dalvik वर्चुअल मशीन)। Byxodes को निष्पादित करने के लिए .dex फ़ाइल / फ़ाइलों का उपयोग करता है।
65,536 से अधिक संदर्भों की संख्या का क्या कारण है?
आपके द्वारा लिखे गए तरीके + एंड्रॉइड फ्रेमवर्क मेथड्स + थर्ड पार्टी लाइब्रेरी (जैसे वॉली, रेट्रोफिट, फेसबुक एसडीके आदि) मेथड्स।
मैंने "कहीं न कहीं" पढ़ा है।
ऐप्पल कम्पेट 24.2.1 में 16.5k विधियाँ शामिल हैं।
Google Play Services GCM 9.6.1 में 16.7k विधियाँ हैं
इसलिए यदि आपने एक सरल हैलो वर्ल्ड एप्लीकेशन बनाया है जिसमें ऐप कम्पेटिबिल 24.2.1 है, तो आप पहले से ही 1/4 हैं। एकल डेक्स विधियों की सीमा को पार करने का तरीका
एंड्रॉइड में मल्टीडेक्स क्या है?
Dex का मतलब होता है Dalvik एक्जिक्यूटेबल, जो कि Google का वर्चुअल मशीन प्रोसेसर (Dalvik) एंड्रॉइड एप्लिकेशन को संभालने के लिए उपयोग करता है। एंड्रॉइड को छोटे और सरल ऐप को ध्यान में रखते हुए बनाया गया था और एक एकल Dalvik निष्पादन पर बाधाओं ने 65,536 तरीकों पर कोड संदर्भों की छत को पिन किया था। इस मुद्दे के कारण और जिस तरह से Dalvik मशीन कोड निष्पादन को संभालती है, उसमें कुछ जटिल और आह्वान के मुद्दे थे, जब तक कि बंदर पैच या मल्टीप्लेक्स एकीकरण। एंड्रॉइड स्टूडियो में मल्टीडेक्स एकीकरण एंड्रॉइड डेवलपर्स को 65,536 से अधिक तरीकों के साथ कोड-बेस को संकलित करने और निष्पादित करने की अनुमति देता है!
एंड्रॉइड डेवलपर आधिकारिक साइट को पूरा करना।
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.