ADT 22 में अपग्रेड करने के बाद लाइब्रेरी अब एपीके में नहीं जुड़ते


238

मेरे पास एक बड़ी एंड्रॉइड ऐप परियोजना है जो कई पुस्तकालय परियोजनाओं को संदर्भित कर रही है। जब तक मैंने ग्रहण एडीटी प्लगइन को नवीनतम संस्करण (v22) में अपग्रेड नहीं किया, तब तक सब कुछ ठीक था। मैंने एसडीके को भी अपग्रेड किया। मुझे ग्रहण में कोई संकलित त्रुटियां नहीं दिखती हैं, लेकिन जब मैं फोन पर प्रोजेक्ट चलाता हूं तो मुझे NoClassDefFoundError मिलती है।

java.lang.NoClassDefFoundError: org.acra.ACRA
....

एरेका लाइब्रेरी संदर्भित लाइब्रेरी प्रोजेक्ट (लिबास फ़ोल्डर में) में से एक में शामिल है और मैं इसे पैकेज एक्सप्लोरर में "एंड्रॉइड प्राइवेट लाइब्रेरी" में देख सकता हूं, जैसा कि मैंने कहा, कोई संकलन त्रुटियां नहीं हैं। प्रोजेक्ट हर किसी के कंप्यूटर पर ठीक चलता है जिसने ADT को अपग्रेड नहीं किया।

मैं पहले से ही सामान की एक पूरी गुच्छा की कोशिश कर चुका हूं, लेकिन यह तक सीमित नहीं है:

  • Android SDK को फिर से इंस्टॉल करें
  • एक ताजा एडीटी बंडल डाउनलोड करें
  • मेरे सभी कोड को हटाएं इसे git से दोबारा प्राप्त करें
  • एप्लिकेशन प्रोजेक्ट में लाइब्रेरी को कॉपी करें
  • इस लाइब्रेरी का उपयोग करने वाले कोड पर टिप्पणी करें - मुझे अगले लाइब्रेरी के लिए वही त्रुटि मिलती है

बिना किसी सफलता के, इसलिए मैं वास्तव में यहाँ हताश हो रहा हूँ।

मुझे वास्तव में खुशी होगी अगर कोई मुझे उस समस्या को हल करने के बारे में संकेत दे सके।

जवाबों:


337

अपने विज्ञापन-देव पद से बोस्टन की उद्धरण सड़कों :

अपग्रेड करते समय, नई 'एंड्रॉइड प्राइवेट लाइब्रेरी' के 'ऑर्डर और एक्सपोर्ट' को हमेशा चेक नहीं किया जाता है। और Android-support-v4.jar अब इस 'एंड्रॉइड प्राइवेट लाइब्रेरीज़' सेक्शन में है।

इसे ठीक करने के लिए, 'ऑर्डर और एक्सपोर्ट' पर जाएं और 'एंड्रॉइड प्राइवेट लाइब्रेरीज़' देखें। फिर ताज़ा / स्वच्छ / पुनर्निर्माण।

आपके द्वारा किसी लाइब्रेरी प्रोजेक्ट के लिए यह 'फिक्स' किए जाने के बाद, आपको किसी भी निर्भर प्रोजेक्ट को बस बंद करने और फिर से खोलने की आवश्यकता हो सकती है, क्योंकि वे इस 'फिक्स' को तुरंत नहीं देख सकते हैं।

इसे एक शॉट दें और भाग्य के साथ यह आपकी समस्या को हल करेगा।

यहां छवि विवरण दर्ज करें


32
कॉमन्सवेयर हमेशा पहले पायनियरों में से एक की तरह है, बहुत बहुत धन्यवाद! :)
पॉल वेन

1
Avery नया ADT संस्करण एक नया आश्चर्य;) आशा है कि नया बिल्ड सिस्टम बेहतर होगा। धन्यवाद CommonsWare
lujop

3
क्या यह सिर्फ मेरे लिए है, या क्या ऐसा लगता है कि हर डेवलपर [जो कि ग्रहण और पुस्तकालयों का उपयोग करता है] अपने सभी पुस्तकालय परियोजनाओं में जाएं और निर्यात के रूप में "एंड्रॉइड प्राइवेट लाइब्रेरीज़" को चिह्नित करें? इससे मुझे लगता है कि हमने पहले स्थान पर इस नए "फीचर" को जोड़ने के Google के इरादे को गलत कर दिया है। शायद हम पुस्तकालयों को निर्यात के रूप में चिह्नित नहीं कर रहे हैं। शायद हम किसी भी लापता जार फ़ाइलों को सीधे हमारे "libs" फ़ोल्डर में जोड़ने वाले हैं। Ex: यह मेरी लाइब्रेरी प्रोजेक्ट को नवीनतम android-support-v4.jar [v13] का उपयोग करने की अनुमति देगा, जबकि ABS आंतरिक रूप से android-support-v4-12.jar का उपयोग करता है।
स्वोबी

2
@swooby: "क्या यह सिर्फ मेरे लिए है, या क्या ऐसा लगता है कि हर डेवलपर [जो कि ग्रहण और पुस्तकालयों का उपयोग करता है] अपने सभी पुस्तकालय परियोजनाओं में जाते हैं और" एंड्रॉइड प्राइवेट लाइब्रेरीज़ "को निर्यात के रूप में चिह्नित करते हैं?" - यह "गलत" इंसोफर है क्योंकि यह एक बग है, जो उपकरण लिखने वाले लोगों द्वारा स्वीकार किया जाता है। "हो सकता है कि हम किसी भी लापता जार फ़ाइलों को सीधे हमारे" लिबास "फ़ोल्डर में जोड़ने वाले हों" - ओह, आपको वह भी करने की आवश्यकता है, जैसा कि आपके पास पिछले वर्ष-और-परिवर्तन के लिए है। हालाँकि, आपको अभी भी इस चेकबॉक्स को देखना होगा।
कॉमन्सवेयर

9
@Phillip: AFAIK, यह सभी परियोजनाएं हैं। अधिक सटीक रूप से, मुझे लगता है, यह सभी परियोजनाएं हैं जिनमें सामान है libs/, लेकिन आप इसे सभी के लिए अच्छी तरह से जांच सकते हैं, यदि आप libs/कुछ महीने बाद सामान जोड़ते हैं और इस बारे में भूल जाते हैं।
कॉमन्सवेयर

10

बस एंड्रॉइड प्राइवेट लाइब्रेरी की जाँच करना पर्याप्त नहीं था, मुझे एंड्रॉइड एसडीके मैनेजर में एंड्रॉइड एसडीके बिल्ड-टूल्स भी स्थापित करना था ।


मैं इस बात की पुष्टि नहीं कर सकता कि यह आवश्यक है, लेकिन साइमनसेज़ ने इसे स्थापित करने से पहले जो त्रुटि की थी, वह मुझे अतीत में नहीं मिली। यह केवल निर्यात चेकबॉक्स की उचित सेटिंग की आवश्यकता हो सकती है जैसा कि ऊपर वर्णित है, लेकिन मुझे लगा कि मुझे यह उल्लेख करना चाहिए कि मैंने बिल्ड टूल्स को स्थापित करने के तरीके के साथ किया था।
strangeluck

यह मेरे लिए काम करता है। केवल ग्रहण वरीयताओं को बदलना ही पर्याप्त नहीं है। आपको Android SDK प्रबंधक में स्थापित बिल्ड-टूल्स की जांच करने की आवश्यकता हो सकती है।
स्टीवंस

4

मुझे भी यही समस्या थी और मेरी adtथी 22.0.1। और ऊपर दिए गए समाधान में से कोई भी काम नहीं किया। आगे किसी वर्किंग प्रोजेक्ट में बाहरी लाइब्रेरी प्रोजेक्ट को जोड़ते समय। मैं हमेशा वर्किंग प्रोजेक्ट के genफोल्डर की जाँच करता हूँ और यदि Rएक्सटर्नल लाइब्रेरी प्रोजेक्ट है (पैकेज नाम के साथ), तो केवल बाहरी लाइब्रेरी प्रोजेक्ट एक्सपोर्ट होता है। और मेरे genफोल्डर पर कोई packagenameबाहरी लाइब्रेरी नहीं दिखाई गई।

इसलिए मैंने project.propertiesफ़ाइल पर जाँच की और वर्तमान में कोई भी बाहरी लाइब्रेरी लिंक मौजूद नहीं android.library.reference.1=था। इसलिए मैंने मैन्युअल रूप से बाहरी पुस्तकालय संदर्भ को जोड़ा, भले ही मैंने इससे जोड़ा था project->properties->Java Build Path->Projects->Add। इसलिए मैन्युअल रूप से project.propertiesमेरे लिए सभी काम संपादित करना।

यहां छवि विवरण दर्ज करें


1
मुझे लगता है कि यह तब हुआ है जब गुई जगह स्थापित करने के android.library.reference.nलिए नहीं है java build path , बल्कि project-> properties-> Android-> Library->> Add...। एक गोत्र
n611x007

4

मैंने एक ऐसी ही समस्या का सामना किया है, लगभग 3 घंटे बिताए हैं, लेकिन यहां प्रस्तावित प्रस्तावों में से किसी ने भी मदद नहीं की ... आखिरकार मुझे समस्या का एक स्रोत मिला: मेरी परियोजना फाइलें और प्रोजेक्ट.प्रॉफर्ट केवल पढ़ने के लिए थीं। जब मैं GUI में कर रहा हूं तो ग्रहण केवल चुपचाप पुस्तकालय की निर्भरता में किसी भी बदलाव की अनदेखी कर रहा है!


3

मुझे भी यही समस्या थी। इसकी वजह थी ग्रहण परियोजना। इसे हल करने के लिए मैंने ग्रहण में एक नई परियोजना बनाई, अपने मौजूदा परियोजना वर्गों और संसाधनों को इसमें कॉपी किया और फिर से फिर से ग्रहण शुरू किया और अपने कस्टम को शामिल किया।


1
बहुत परेशानी हुई, कॉमन्सवेयर के समाधान ने मेरे लिए काम किया और मुझे विश्वास है कि इसने आपके लिए भी काम किया होगा।
बिल्थोन

2

मेरे पास ऐसा ही मुद्दा था और मेरा जवाब कॉमन्सवेयर से थोड़ा अलग है। यहाँ मेरा स्क्रीनशॉट है:

यहां छवि विवरण दर्ज करें

मेरे निर्माण में वापस कामों की जाँच के बाद फिर से काम करना शुरू कर दिया।


2
मैं इस समाधान के साथ सावधान रहना होगा। Android Dependenciesद्वारा प्रतिस्थापित किया गया Android Private Librariesऔर केवल विरासत के कारणों के लिए ही हो सकता है। मुझे लगता है कि इसे किसी भी समय हटाया जा सकता है।
साइमनसेज़

0

मुझे भी यही समस्या थी,

i) रेफ़रेंड लिब्रेरीज़ के रूप में gson lib जोड़ें
)) जावा बिल्ड पाथ में इसकी जाँच करें http://i.stack.imgur.com/Gldhs.png

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.