我用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(); }
解决方法
看来您正在使用ACRA进行错误报告.我遇到同样的问题,找到答案在这里:
http://code.google.com/p/acra/issues/detail?id=22
– 类org.acra.ReportingInteractionMode {*; }
到你的proguard配置文件