# proguard include file (http://proguard.sourceforge.net) # we call the values method reflectively in Enum.valueOf(): -keep public class * extends java.lang.Enum { public static *** values(); } # the VM depends on the fixed layout of the following classes: -keepclassmembers class java.lang.Class { !static ; } -keepclassmembers class java.lang.ClassLoader { !static ; } -keepclassmembers class java.lang.SystemClassLoader { !static ; } -keepclassmembers class java.lang.String { !static ; } -keepclassmembers class java.lang.Thread { !static ; } -keepclassmembers class java.lang.StackTraceElement { !static ; } -keepclassmembers class java.lang.Throwable { !static ; } -keepclassmembers class java.lang.Byte { !static ; } -keepclassmembers class java.lang.Boolean { !static ; } -keepclassmembers class java.lang.Short { !static ; } -keepclassmembers class java.lang.Character { !static ; } -keepclassmembers class java.lang.Integer { !static ; } -keepclassmembers class java.lang.Long { !static ; } -keepclassmembers class java.lang.Float { !static ; } -keepclassmembers class java.lang.Double { !static ; } -keepclassmembers class java.lang.ref.Reference { !static ; } -keepclassmembers class java.lang.ref.ReferenceQueue { !static ; } -keepclassmembers class java.lang.ref.WeakReference { !static ; } -keepclassmembers class java.lang.ref.PhantomReference { !static ; } -keepclassmembers class java.lang.reflect.Field { !static ; } -keepclassmembers class java.lang.reflect.Method { !static ; } # ClassLoader.getSystemClassloader() depends on the existence of this class: -keep class java.lang.SystemClassLoader # the VM references these classes by name, so protect them from obfuscation: -keepnames public class java.lang.** # musn't obfuscate native method names: -keepclasseswithmembernames class * { native ; }