2016-09-22 3 views
8

पर ग्रहण मैं एंड्रॉइड आधिकारिक वेबसाइट द्वारा सुझाए गए सभी स्रोत कोड को एएस में ले जा रहा हूं। हालांकि, अनुभव बहुत अच्छा नहीं है। यह here वर्णित के रूप में बहुत आलसी है। लेकिन यह अब के लिए मेरी अंतिम समस्या नहीं है।एंड्रॉइड स्टूडियो आयात

मैं ऐसे compileSdkVersion चाहते हैं ताकि इस तरह की त्रुटियों को अद्यतन करने के रूप में कई समस्याओं का समाधान किया:

Error:(13) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Inverse'.

सुधारा जा सकता है। लेकिन जब मैं जाता हूं तो समस्याएं चलती रहती हैं। अब मेरे पास यह 64k डेक्स मुद्दा है।

Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

ग्रहण का उपयोग करते समय मुझे यह Dex समस्या कभी नहीं मिली। मेरे पास स्रोत कोड है जो बिल्कुल Eclipse में था। केवल अंतर ही उन ग्रेडल परिवर्तनों को केवल एएस पर काम करने के लिए आवश्यक हैं। कोई विचार क्यों यह अचानक Dex मुद्दा है? अगर मैं multiDexEnabled से true पर सेट करता हूं, तो क्या प्रभाव हैं?

+2

दुर्भाग्यवश (और मुझे पता है कि यह वास्तव में सहायक नहीं है) माइग्रेशन प्रक्रिया को संकुचित करने के लिए धन्यवाद है और परियोजना संरचना में बदलाव आया है। ग्रैडल संभवतः नए "मुद्दे" को पेश कर रहा है। मैं यहां एक नज़र डालने की सिफारिश करता हूं https://developer.android.com/studio/build/multidex.html – zgc7009

+2

अपनी निर्भरताओं पर नज़र डालें। मैंने साल पहले एक परियोजना पर 64k डेक्स मुद्दे में भाग लिया था और पाया कि मैं उन निर्भरताओं सहित था जो बहुत बड़े थे और इन सभी की आवश्यकता नहीं थी। जब मैंने पहली बार इसका उपयोग करना शुरू किया, तो मैं धीरे-धीरे और एएस स्टूडियो द्वारा बंद कर दिया गया था, लेकिन अब बाद के संस्करणों में गर्म तैनाती है, मैं यूआई कोड बदल सकता हूं, डीबग बटन पर क्लिक कर सकता हूं और इसे कुछ में एमुलेटर पर चला सकता हूं सेकंड। ऐसा कुछ जो ग्रहण में कभी नहीं हो सकता है। –

+1

आपको यह [आलेख] मिल सकता है (https://mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost) सहायक जो मुझे लगता है कि पिछले सुझाव आ रहे हैं। यदि आपको अपनी परियोजना का ऑडिट करने की आवश्यकता है तो उन्होंने उस प्रक्रिया में सहायता के लिए एक [dexinfo gradle प्लगइन] (https://mutualmobile.com/posts/introducing-our-dexinfo-gradle-plugin) बनाया है। – light

उत्तर

1

मुझे लगता है अपने डेक्स त्रुटि एक पुस्तकालय के विकास का एक परिणाम है, लेकिन बिना अधिक जानकारी, डीबग करना मुश्किल है। एंड्रॉइड स्टूडियो (2.2) का नवीनतम संस्करण एक एपीके विश्लेषक उपकरण प्रदान करता है जो डीएक्स सीमा को अधिक पारदर्शी बनाता है।

जब Google Play सेवाओं API आपको दोगुना सुनिश्चित करें कि आप केवल इन निर्देशों compile 'com.google.android.gms:play-services-fitness:9.6.1' बल्कि सब कुछ (full list) सहित से के साथ प्रयोग किया लोगों को शामिल कर रहे हैं बनाने के लिए की जाँच करनी चाहिए का उपयोग कर।

यदि आपको उन सभी पुस्तकालयों की आवश्यकता है जो आप पहले से ही निर्भर कर रहे हैं, तो यह आमतौर पर आपके विकास पर्यावरण में मल्टीडेक्स को सक्षम करने (एल या अधिक से अधिक डिवाइस या एमुलेटर का उपयोग करने के विकास की आवश्यकता होती है), लेकिन फिर रिलीज में minificationEnabled का उपयोग करके हल किया जाता है। ऐसा बनाता है कि आपके रिलीज एपीके में मल्टीडेक्स की आवश्यकता नहीं है। इसका परिणाम तेजी से डीबग बिल्ड और गैर-मल्टीडेक्स के संयोजन में होता है जो आपकी रिलीज बिल्ड के लिए धीमी स्टार्टअप समय को रोकने के लिए बनाता है।

एक थोड़ा और अधिक जानकारी: आप डिबग में देशी multidex का उपयोग करते हैं बनाता है यह परिणाम में तेजी से वृद्धिशील बनाता है क्योंकि मॉड्यूल और पुस्तकालयों के रूप में अलग डेक्स फ़ाइलें और तैनात बीच कम प्रसंस्करण तैनात (minSdk एल या अधिक से अधिक करने के लिए सेट की आवश्यकता है)।

जब आप अपनी रिलीज में minificationEnabled का उपयोग करते हैं तो यह अक्सर दूसरी डीएक्स फ़ाइल की आवश्यकता को समाप्त करता है क्योंकि आपके निर्भरता के तरीकों का उपयोग नहीं किया जाता है। यह आमतौर पर मल्टीडेक्स के नकारात्मक प्रभावों को नकारने वाले एकल डीएक्स में परिणाम देता है (< संस्करण एल उपकरणों के लिए ऐप प्रारंभिक पर एन + 1 डीएक्स फाइलों की प्रतिलिपि बनाना)।

+0

अब तक का सबसे अच्छा जवाब है। (जब तक कि 22 घंटे में बेहतर उत्तर न हो जाए, तो यह उत्तर बक्षीस का हकदार होगा।) धन्यवाद। ;) – user1506104

2

सबसे पहले, सुनिश्चित करें कि आप आयात (बिल्ड - क्लीन, बिल्ड - पुनर्निर्माण समस्या) के बाद परियोजना का पुनर्निर्माण करें। सीमा तरीकों संदर्भ के साथ इस समस्या का समाधान:

android { 

    defaultConfig { 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    ... 
    } 

    dependencies { 
     compile 'com.android.support:multidex:1.0.0' 
} 

और यह भी आप MultiDex समर्थन करने के लिए जावा में Application.class अद्यतन करें। पूरी जानकारी here देखें!

अद्यतन:

यह विकल्प, ग्रहण पर ध्यान न दें क्योंकि तरीकों संदर्भ सीमा (जैसे के रूप में हमारे मामले में) पर्यावरण से गणना की जा सकती। ग्राडल बिल्ड में इन विकल्पों में क्यों शामिल नहीं है - अभी भी सवाल ...

एंड्रॉइड एप्लिकेशन (एपीके) फ़ाइलों में डाल्विक एक्जिक्यूटिव (डीईएक्स) फाइलों के रूप में निष्पादन योग्य बाइटकोड फाइलें होती हैं, जिनमें आपके चलाने के लिए उपयोग किए गए संकलित कोड होते हैं एप्लिकेशन। दल्विक निष्पादन योग्य विनिर्देश उन विधियों की कुल संख्या को सीमित करता है जिन्हें एकल डीईएक्स फ़ाइल में 65,536 तक संदर्भित किया जा सकता है - जिसमें एंड्रॉइड फ्रेमवर्क विधियों, लाइब्रेरी विधियों और आपके कोड में विधियां शामिल हैं। कंप्यूटर विज्ञान के संदर्भ में, किलो, के शब्द, 1024 (या 2^10) दर्शाता है। चूंकि 65,536 64 x 1024 के बराबर है, इसलिए इस सीमा को '64K संदर्भ सीमा' के रूप में जाना जाता है।

Source AS Doc

+0

क्या आप जानते हैं कि एएस में अचानक अचानक डीएक्स क्यों जारी है? – user1506104

+0

@ user1506104 अपडेट किया गया प्रश्न। – GensaGames

+0

धन्यवाद। आपको अपवित्र दिया – user1506104

1

Multidex समस्या इसलिए होती है जब आप अपनी परियोजना में पुस्तकालयों के बहुत का उपयोग करें। यदि आपके ऐप के कोड में 64k से अधिक विधियां हैं तो ऐसा होता है।

When your application and the libraries it references reach a certain size, you encounter build errors that indicate your app has reached a limit of the Android app build architecture.

आप की तरह कुछ लिंक उल्लेख कर सकते हैं:

How to enable multidexing with the new Android Multidex support library

http://www.rapidvaluesolutions.com/tech_blog/multidex-issue-or-building-application-over-65k-methods/

https://mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost

संबंधित मुद्दे