2012-02-14 28 views
7

एंड्रॉइड एप्लिकेशन क्रैश हो जाता है अगर प्रोग्रार्ड का इस्तेमाल ओबफस्केटिंग के लिए किया जाता है। नीचे stacktrace है।एंड्रॉइड प्रोगार्ड - जैक्सन के टाइप रेफरेंस क्लास में अवैध अर्ग्यूमेंट एक्सेप्शन

Caused by: java.lang.IllegalArgumentException: Internal error: 
    TypeReference constructed without actual type information 
    at a.b.a.g.b.<init>(TypeReference.java:35) 
    at a.c.d.q.<init>(StdCouchDbInstance.java:22) 
    at a.c.d.p.<clinit>(StdCouchDbInstance.java:22) 

मैं EktorpClient पुस्तकालय का उपयोग कर रहा (CouchDB के साथ काम करने के लिए) और StdCouchDbInstance.javathis फ़ाइल को संदर्भित करता है और TypeReference.javathis पैकेज में है। इस समस्या को दूर करने के लिए प्रोगुआर्ड कॉन्फ़िगरेशन फ़ाइल में मुझे किस विकल्प का उपयोग करना चाहिए, इस बारे में कोई सुझाव?

+0

क्या आपको कभी इसका समाधान मिला? –

+0

संख्या। अभी नहीं। यह देखने की ज़रूरत है कि मैं जैक्सन कैसे छोड़ सकता हूं। – 500865

उत्तर

14

मैं प्रोजेवार्ड का उपयोग एक Ektorp निर्भरता के साथ इस समस्या में भाग गया। TypeReference एक सामान्य है, और -keepattributes Signature सामान्य जानकारी रखेगा।

मैंने वास्तव में निम्नलिखित का उपयोग किया, जिसने मेरी समस्या हल की।

-keepattributes Signature,*Annotation*,EnclosingMethod 

Proguard Examples से:

"हस्ताक्षर" विशेषता जब JDK 5.0 और इसके बाद में संकलन सामान्य प्रकार के उपयोग करने में सक्षम होने के लिए आवश्यक है।

+0

धन्यवाद डेविड ने मेरी समस्या हल की :) – Bojan

+0

धन्यवाद, यह भी मेरे मुद्दे को हल किया: डी – cn123h

0

प्रोगार्ड की तरह लगता है कि सामान्य प्रकार की जानकारी (टाइप पैरामीटर से गुज़रना) किसी भी तरह से मिशनलिंग है। मुझे नहीं पता कि यह एक ज्ञात ProGuard मुद्दा होगा; लेकिन अगर आप इसका सामना कर चुके हैं तो आप जैक्सन उपयोगकर्ताओं को मेलिंग सूची देख सकते हैं। इसके अलावा, आप विभिन्न जैक्सन संस्करण को आजमा सकते हैं, हालांकि मुझे नहीं लगता कि कक्षा TypeReference बहुत बदल गई है।