Android ProGuard“java.lang.nosuchfielderror:Toast”例外

时间:2012-04-05 10:00:11

标签: java android proguard

我使用ProGuard模糊了我的Android应用程序,当我尝试运行我的混淆.apk时,它会抛出:

  

java.lang.nosuchfielderror:Toast

这是我的proguard.cfg文件:

<!-- language: lang-none -->

    -injars      bin/classes //injars
    -injars      libs   //injars
    -outjars     bin/classes-processed.jar
    -optimizationpasses 1
    -dontusemixedcaseclassnames
    -dontskipnonpubliclibraryclasses
    -dontpreverify
    -verbose
    -allowaccessmodification
    -keepattributes *Annotation*
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    -printmapping D:/out.map
    -renamesourcefileattribute ProGuard
    -keepattributes Exceptions,InnerClasses,Signature,Deprecated,
        SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
    -libraryjars C:/Program Files/Android/android-sdk/platforms/android
        12/android.jar    
    -dontwarn android.support.**
    -dontwarn com.android.**
    -dontwarn com.google.**
    -dontwarn org.apache.** 
    -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>;
    }

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

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

    -keepclassmembers class *.R$ {
        public static <fields>;
    }

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

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

    -keepclassmembers class * extends android.app.Activity {
        public void *On*Click(android.view.View);
       public void *on*Click(android.view.View);
    }

    -keepclassmembers class * implements java.io.Serializable {
        static final long serialVersionUID;
        private static final java.io.ObjectStreamField[] serialPersistentFields;
        private void writeObject(java.io.ObjectOutputStream);
        private void readObject(java.io.ObjectInputStream);
        java.lang.Object writeReplace();
        java.lang.Object readResolve();
    }

1 个答案:

答案 0 :(得分:4)

您似乎正在使用ACRA进行错误报告。我遇到了同样的问题,在这里找到答案:http://code.google.com/p/acra/issues/detail?id=22

解决方案是添加

-keep class org.acra.ReportingInteractionMode { *; }

到你的proguard配置文件