2011-10-17 13 views
5

के साथ काम नहीं कर रहा है, आज से, मेरे आवेदन के साथ कुछ अजीब हो रहा है। हर बार जब मैं एक बटन है कि एंड्रॉयड की स्थापना की है पर क्लिक करें: onclick विशेषता, मैं एक IllegalStateException मिलता है: एक विधि नहीं मिल सका ...एंड्रॉइड: ProGuard

मैंने देखा है कि केवल होता है जब मैं फ़ाइल में Proguard सक्षम: default.properties

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

बात यह है कि पिछले सप्ताह हुआ नहीं है .. (मैं ProGuard भी उपयोग कर रहा था):

यह मेरा proguard.cfg है। कोई विचार?

संपादित मैं इस समस्या का एक समाधान पाया: समस्याओं के साथ परियोजना एडीटी प्लगइन (ग्रहण) के एक पुराने संस्करण के साथ बनाया गया था। मैंने एक ही पैरामीटर के साथ एक नई परियोजना बनाई और src/, res/ और प्रकट, और समस्या हल हो गई!

+0

आपकी पोस्ट में आपने गलती से अधिकांश कोड पर टिप्पणी की है - सुनिश्चित नहीं है कि यह सिर्फ एक टाइपो है या नहीं। –

+0

यह प्रोजेगार्ड फ़ाइल है, इसमें/* है और स्टैक ओवरफ्लो इसे एक टिप्पणी के रूप में पहचानता है .. – SERPRO

उत्तर

4

आपको अपने टैग से जुड़े विधि को म्यूटेट न करने के लिए प्रोजेगार्ड को बताना होगा।

-keep class mypackage.MyCallbackClass { 
    void myCallbackMethod(java.lang.String); 
} 
+0

यह है .. धन्यवाद! मुझे अभी भी समझ में नहीं आता कि ऐसा क्यों नहीं हुआ था। – SERPRO

+0

मैंने अभी जांच की है और एंड्रॉइड: ऑनक्लिक कुछ एक्सएमएल में काम करता है लेकिन दूसरों में नहीं .. क्या आप जानते हैं कि ऐसा क्यों होता है? – SERPRO

6
एंड्रॉयड ढांचे उपकरण (YOUR_ANDROID_DIR/उपकरण/ProGuard/ProGuard-android.txt), आप पा सकते हैं में उदाहरण फ़ाइल में

निम्नलिखित:

यहाँ एक उदाहरण नियम (the proguard website से लिया गया) है नियम:

# We want to keep methods in Activity that could be used in the XML attribute onClick 
-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

टिप्पणी के साथ यह काफी स्पष्ट है।

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