Android ProGuard "java.lang.nosuchfielderror: Toast" exception

android, java, proguard

Solution

It appears you are using ACRA for error reporting. I ran into the same issue, found the answer here:http://code.google.com/p/acra/issues/detail?id=22

the solution is to add

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

to your proguard config file

Problem

I obfuscated my Android app with ProGuard and when trying to run my obfuscated .apk it throws: java.lang.nosuchfielderror: Toast This is my proguard.cfg file: ``` <!-- 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(); } ```

Original source