जवाबों:
यह उत्तर एंड्रॉइड के आधिकारिक प्रलेखन (उद्धृत भागों, विशेष रूप से) पर बहुत निर्भर करता है ।
एकता परियोजना के लिए मल्टीडेक्स समर्थन कैसे सेटअप करें
मल्टीडेक्स क्या है:
एंड्रॉइड एप्लिकेशन (एपीके) फाइलों में डाल्विक एक्सेसेबल (डीईएक्स) फाइलों के रूप में निष्पादन योग्य बायटेकोड फाइलें होती हैं, जिसमें आपके ऐप को चलाने के लिए उपयोग किए गए संकलित कोड होते हैं। Dalvik निष्पादन योग्य विनिर्देश उन तरीकों की कुल संख्या को सीमित करता है, जिन्हें किसी एकल DEX फ़ाइल के भीतर 65,536 में संदर्भित किया जा सकता है, जिसमें Android फ्रेमवर्क विधियाँ, लाइब्रेरी विधियाँ, और आपके अपने कोड में विधियाँ शामिल हैं। इस सीमा को पार करने के लिए आवश्यक है कि आप एक बहु डेक्स कॉन्फ़िगरेशन के रूप में ज्ञात एक से अधिक डीएक्स फ़ाइल बनाने के लिए अपनी एप्लिकेशन बिल्ड प्रक्रिया को कॉन्फ़िगर करें।
जब हम मल्टीडेक्स का उपयोग करते हैं:
जब हम किसी एकल DEX फ़ाइल में 65,536 तक संदर्भित तरीकों की कुल संख्या को पार कर सकते हैं- जिसमें आपके अपने कोड में एंड्रॉइड फ्रेमवर्क विधियाँ, लाइब्रेरी विधियाँ और विधियाँ शामिल हैं।
64K की सीमा से बचें
64K या अधिक विधि संदर्भों के उपयोग को सक्षम करने के लिए अपने एप्लिकेशन को कॉन्फ़िगर करने से पहले, आपको अपने ऐप कोड द्वारा बताई गई विधियों सहित कुल संदर्भों को कम करने के लिए कदम उठाने चाहिए, जिसमें आपके ऐप कोड द्वारा परिभाषित तरीके शामिल हैं या लाइब्रेरी शामिल हैं। निम्नलिखित रणनीतियाँ आपको DEX संदर्भ सीमा को टालने में मदद कर सकती हैं:
अपने ऐप की प्रत्यक्ष और सकर्मक निर्भरताओं की समीक्षा करें - अपने ऐप में शामिल किसी भी बड़े लाइब्रेरी निर्भरता का उपयोग इस तरीके से किया जाता है कि ऐप में जोड़े जा रहे कोड की मात्रा को घटा दिया जाए। एक सामान्य विरोधी पैटर्न में एक बहुत बड़ी लाइब्रेरी शामिल है क्योंकि कुछ उपयोगिता विधियां उपयोगी थीं। अपने ऐप कोड निर्भरता को कम करने से आप अक्सर DEX संदर्भ सीमा से बचने में मदद कर सकते हैं।
ProGuard के साथ अप्रयुक्त कोड को हटा दें - अपनी रिलीज़ बिल्ड के लिए ProGuard चलाने के लिए कोड सिकुड़ सक्षम करें । सिकुड़ते सक्षम करना सुनिश्चित करता है कि आप अपने APK के साथ अप्रयुक्त कोड को शिपिंग नहीं कर रहे हैं।
इन आधिकारिक सुझावों के अलावा, अपनी एकता परियोजना का निर्माण करते समय, इन चरणों का पालन करने से आपको आगे मदद मिलेगी:
मल्टी डेक्स कॉन्फ़िगरेशन का उपयोग करने के लिए अपने ऐप प्रोजेक्ट की स्थापना के लिए आवश्यक है कि आपका निम्न संशोधन करें।
यदि आपका minSdkVersion 21 या अधिक पर सेट है, तो आपको बस अपने मॉड्यूल-स्तर build.gradle फ़ाइल में सेट
multiDexEnabled
करना होगाtrue
, जैसा कि यहां दिखाया गया है:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
हालाँकि, यदि आपका
minSdkVersion
सेट 20 या उससे कम है, तो आपको निम्नानुसार मल्टीडेक्स सपोर्ट लाइब्रेरी का उपयोग करना होगा:3.1। मल्टीडेक्स को सक्षम करने के लिए मॉड्यूल-लेवल बिल्ड.ग्रेड फ़ाइल को संशोधित करें और मल्टीडेक्स लाइब्रेरी को एक निर्भरता के रूप में जोड़ने के लिए, जैसा कि यहां दिखाया गया है:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2। इस पर निर्भर करते हुए कि आप अनुप्रयोग वर्ग को ओवरराइड करते हैं, निम्न में से कोई एक कार्य करें:
- यदि आप
Application
वर्ग को ओवरराइड नहीं करते हैं ,android:name
तो<application>
टैग में सेट करने के लिए अपनी मैनिफ़ेस्ट फ़ाइल संपादित करें :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
- यदि आप
Application
वर्ग को ओवरराइड करते हैं, तो इसे मल्टीडेक्सएप्लिकेशन (यदि संभव हो तो) के विस्तार के लिए बदल दें:
public class MyApplication extends MultiDexApplication { ... }
- या यदि आप एप्लिकेशन क्लास को ओवरराइड करते हैं, लेकिन बेस क्लास को बदलना संभव नहीं है, तो आप इसके बजाय संलग्नक को बंद कर सकते हैं () विधि और मल्टीडेक्स को सक्षम करने के लिए MultiDex.install (यह) कॉल करें:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
अन्य प्लगइन्स त्रुटि की जाँच करें और प्रोजेक्ट को साफ़ करें। और फिर से sysc करें।
यदि आपके प्रोजेक्ट में कोई निर्भरता समस्या है, तो इस आदेश को Android टर्मिनल में चलाएं
% Gradle clean App."App name"
निर्भरता के तहत, अपने आवेदन ग्रेड में इन निर्भरता की प्रतिलिपि बनाएँ:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
अपने मुख्य प्रोजेक्ट ग्रैडल में साइनिंग कॉनफिग जोड़ें।
या हस्ताक्षर मोड को डिबग मोड में मैन्युअल रूप से सेट करें, फ़ाइल पर जाएं -> प्रोजेक्ट संरचना -> मॉड्यूल के तहत अपनी परियोजना पर क्लिक करें और बिल्ड प्रकार के तहत डीबग का चयन करें -> साइनिंग कॉन्फ़िगरेशन चुनें-> डिबग
अब अपने ग्रैडल को सिंक करें और प्रोजेक्ट बनाएं।
मैं आपको इस लिंक के माध्यम से जाने की सलाह दूंगा जो आपको एकता के माध्यम से सीधे मल्टीडेक्स सक्षम गेम बनाने में मदद करेगा।
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
नोट: यह केवल मल्टीडेक्स को एकता में सक्षम करेगा (और मल्टीडेक्स मुद्दों को ठीक करना चाहिए)। यह संबंधित समस्याओं को ठीक नहीं करेगा।