2011-04-08 14 views
14

के साथ कक्षा में सभी विधियों को कैसे रखा जाए, मैं अपने एंड्रॉइड एप्लिकेशन को अनुकूलित करने के लिए ProGuard का उपयोग करता हूं। हालांकि एंड्रॉइड इंस्ट्रूमेंटेशन टेस्ट के लिए मुझे सभी सदस्यों को रखने के लिए कुछ (लेकिन सभी नहीं) कक्षाओं की आवश्यकता है। मैं विभिन्न दृष्टिकोण, पिछले जा रहा है की कोशिश की:ProGuard

-keepclassmembers public class com.mycompany.myclass { 
    *; 
} 

लेकिन आश्चर्यजनक रूप से मैं अभी भी

java.lang.NoSuchMethodError: com.mycompany.myclass.<init> 

यहाँ दर्दनाक भाग दो कंस्ट्रक्टर्स देखते हैं और एक काफी कुछ मापदंडों किया है।

क्या कोई भी कक्षा को पूरी तरह से अपरिवर्तित और ProGuard द्वारा छेड़छाड़ करने के लिए सही वाक्यविन्यास जानता है?

+1

' 'वाइल्डकार्ड का उपयोग करें। – Matthias

उत्तर

17

खैर, यह स्वीकारोक्ति समय है। सवाल bollocks है। -keepclassmembers सही है। समस्या तब हुई क्योंकि एक टीम के साथी ने कोड तोड़ा और कन्स्ट्रक्टर वास्तव में वहां नहीं था।

ध्यान दें कि अगर वहाँ एक परिवर्तन यह है कि पूरी कक्षा दूर अनुकूलित है तो आप -keep का उपयोग करना चाहिए के रूप में kharles सुझाव दिया लेकिन {*;} यह सुनिश्चित करें कि सभी तरीकों जगह में रहने की जरूरत है है।

ध्यान दें कि {*;} केवल परीक्षण के लिए है। उत्पादन के लिए एक और अधिक बढ़िया दाग दृष्टिकोण का उपयोग करना चाहिए।

मैं किसी भी समस्या के साथ किसी के लिए प्रश्न रखता हूं।

0

कोशिश

-keep public class com.mycompany.myclass 

(उपयोग रखने के लिए, और कोई {*;})

+0

नहीं, यह इससे भी बदतर हो जाता है। शर्मनाक सत्य: ऊपर दिए गए मेरे बयान सही हैं - एक टीम के साथी ने कोड तोड़ दिया और यही कारण है कि यह काम नहीं किया। तो प्रश्न को हटाएं या अन्य समस्याओं के लिए एक ही समस्या के साथ रखें? – Martin

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