जब मैं Proguard के साथ मेरी apk निर्यात करने की कोशिश मैं त्रुटियों (400 से अधिक) के लिए इसी तरह का एक बहुत कुछ मिलता है:जार फाइलों के साथ प्रोगार्ड मुद्दों, लापता जार कैसे ढूंढें?
Warning: org.codehaus.jackson.jaxrs.JsonMappingExceptionMapper: can't find superclass or interface javax.ws.rs.ext.ExceptionMapper
और
org.codehaus.jackson.xc.DataHandlerJsonDeserializer$1: can't find superclass or interface javax.activation.DataSource
मैं Jackson Json library उपयोग कर रहा हूँ, और त्रुटियों से संबंधित प्रतीत उस से।
अगर कोई वर्ग या इंटरफेस के अनसुलझे संदर्भ हैं, आप सबसे अधिक संभावना एक आवश्यक पुस्तकालय निर्दिष्ट करना भूल:
इस त्रुटि शोध मैं Proguards FAQ से निम्नलिखित पाया। उचित प्रसंस्करण के लिए, आपके कोड द्वारा संदर्भित सभी पुस्तकालयों को जावा रन-टाइम लाइब्रेरी समेत निर्दिष्ट किया जाना चाहिए। पुस्तकालयों को निर्दिष्ट करने के लिए,-पुस्तकालय विकल्प का उपयोग करें।
इतने पर चारों ओर सर्च कर रहे हैं मैं इस से संबंधित अनुत्तरित प्रश्नों का एक बहुत पाया है, लेकिन आम समझ जार फ़ाइल (इस मामले Jackon JSON में) मैं उपयोग कर रहा हूँ और अधिक पुस्तकालयों पर निर्भर है था और वे करने की आवश्यकता है प्रोगार्ड की कॉन्फ़िगरेशन फ़ाइल में कुछ कैसे जोड़ा गया।
हालांकि, मैं यह नहीं समझ सकता कि यह निर्धारित करने के लिए कि जार की क्या आवश्यकता है और वे कहां हैं। चेतावनी ऐसे javax.ws.rs.ext, org.joda.time, org.codehaus.stax2, javax.xml.stream, आदि
- मैं किस तरह तय करते के रूप में विभिन्न संकुल के एक बहुत उल्लेख क्या जार उन पैकेजों को शामिल करें? उदाहरण के लिए, javax.ws.rs.ext के लिए जार की आवश्यकता है। ** कक्षाएं?
- मैं कैसे पता लगा सकता हूं कि उन जार कहाँ हैं और प्रोग्रार्ड में लाइब्रेजर्स के साथ किस मार्ग का उपयोग किया जाएगा?
धन्यवाद बहुत
संपादित करें: मैं भी है कि मैं एक Android Library Project सेटअप का उपयोग कर रहा उल्लेख करना चाहिए। जार मुख्य लाइब्रेरी प्रोजेक्ट में हैं, और वास्तविक कार्य प्रोजेक्ट में लाइब्रेरी प्रोजेक्ट में जार समेत उनके निर्माण पथ हैं। पता नहीं है कि इससे कोई फर्क पड़ता है लेकिन सोचा कि मुझे इसका जिक्र करना चाहिए।
अद्यतन बस का परीक्षण करने, मैं पूरी तरह से जैक्सन अब तक का निर्माण पथ से और मेरे कोड से हटा दिया है और अब Proguard सफलतापूर्वक पूरा करती है। प्रश्न अभी भी बने रहे हैं ... इन त्रुटियों को संभालने के लिए सही दृष्टिकोण क्या है?
ग्रहण में एंड्रॉयड निर्यात विज़ार्ड स्वचालित रूप से ProGuard को/lib/जार जोड़ सकते हैं या वे सब इस तरह ProGuard कॉन्फ़िग फ़ाइल में मैन्युअल रूप से जोड़े जाने के लिए है है:
-libraryjars C:/Project/lib/somjar.jar
मैं कोशिश की थी के लिए कि जैक्सन एक लेकिन इससे कोई फर्क नहीं पड़ता। क्या इसका मतलब है कि मुझे चेतावनियों में उल्लिखित कक्षाओं के लिए जरूरी सभी जार भी ढूंढना होगा और उनको जोड़ना होगा? क्या वे एसडीके में या जावा इंस्टॉलेशन में होंगे?
क्षमा करें अगर ये बेवकूफ सवाल हैं, लेकिन मैं पिछले कुछ घंटों के लिए इसे समझने की कोशिश कर रहा हूं और मुझे नहीं पता कि क्या करना है।
धन्यवाद फिर से
अद्यतन फिर
तो अधिक खोज, बेंजामिन के सुझाव के साथ संयुक्त, मैंने पाया लापता वर्ग के कुछ rt.jar में थे, जो JDK के lib फ़ोल्डर में है । इसलिए मैं proguard.cfg फ़ाइल के लिए
-libraryjars <java.home>/lib/rt.jar
जोड़ने समाप्त हो गया और 204 के लिए नीचे 485 से चेतावनी लाया अरे मुझे लगता है कि कुछ है ... शेष चेतावनी वर्गों है कि मैं बिल्कुल भी नहीं मिल सकता है का वर्णन। ऐप प्रोजेगार्ड चलाने के बिना ठीक काम करता है, इसलिए ये कक्षाएं कहीं सही होनी चाहिए? या ये चेतावनियां हैं कि मुझे -dontwarn
का उपयोग करना चाहिए?
शेष कक्षाओं इन पैकेजों में हैं:
org.joda.time.
org.codehaus.stax2.
javax.ws.rs.
तो अब मैं सिर्फ यह पता लगाने की कोई तरीका होना चाहिए:
- क्या जार इन कक्षाओं है
- जहां इन जार तो मैं कर रहे हैं उन्हें प्रोजेवार्ड कॉन्फ़िगरेशन फ़ाइल
जैक्सन का पहला पृष्ठ जो आप विशेष रूप से लिंक करते हैं, बताता है कि जैक्सन ** शून्य ** बाहरी निर्भरता है। क्या आपको यकीन है कि समस्या जैक्सन जेएसओएन के साथ है? – SyntaxT3rr0r
@ सिंटैक्स, मैंने यही सोचा, लेकिन सभी 485 चेतावनियां हैं * org.codehaus.jackson.something: संदर्भित कक्षा कुछ नहीं मिल सकती है। कृपया * अन्य पुस्तकालयों में से कोई भी मैं चेतावनी देता हूं। हालांकि आपके प्रश्न के उत्तर में, मुझे यकीन नहीं है कि समस्या जैक्सन के साथ है। मेरे पास इस बिंदु पर कोई अन्य लीड नहीं है। – cottonBallPaws