2008-01-19 00:56:12 +00:00
|
|
|
# proguard include file (http://proguard.sourceforge.net)
|
|
|
|
|
|
|
|
# we call the values method reflectively in Enum.valueOf():
|
|
|
|
|
2008-01-31 00:10:49 +00:00
|
|
|
-keepclassmembers public class * extends java.lang.Enum {
|
2008-01-19 00:56:12 +00:00
|
|
|
public static *** values();
|
|
|
|
}
|
|
|
|
|
2008-01-19 01:51:37 +00:00
|
|
|
# the VM depends on the fixed layout of the following classes:
|
2008-01-19 00:56:12 +00:00
|
|
|
|
2008-01-20 22:00:19 +00:00
|
|
|
-keepclassmembers class java.lang.Class { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.ClassLoader { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.SystemClassLoader { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.String { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Thread { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.StackTraceElement { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Throwable { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Byte { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Boolean { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Short { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Character { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Integer { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Long { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Float { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.Double { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.ref.Reference { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.ref.ReferenceQueue { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.ref.WeakReference { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.ref.PhantomReference { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.reflect.Field { !static <fields>; }
|
|
|
|
-keepclassmembers class java.lang.reflect.Method { !static <fields>; }
|
2008-01-19 00:56:12 +00:00
|
|
|
|
2008-01-29 00:34:14 +00:00
|
|
|
# the VM may throw instances of the following:
|
|
|
|
|
|
|
|
-keep public class java.lang.RuntimeException
|
|
|
|
-keep public class java.lang.IllegalStateException
|
|
|
|
-keep public class java.lang.IllegalArgumentException
|
|
|
|
-keep public class java.lang.IllegalMonitorStateException
|
|
|
|
-keep public class java.lang.ArrayIndexOutOfBoundsException
|
|
|
|
-keep public class java.lang.ArrayStoreException
|
|
|
|
-keep public class java.lang.NegativeArraySizeException
|
|
|
|
-keep public class java.lang.ClassCastException
|
|
|
|
-keep public class java.lang.ClassNotFoundException
|
|
|
|
-keep public class java.lang.NullPointerException
|
|
|
|
-keep public class java.lang.InterruptedException
|
|
|
|
-keep public class java.lang.StackOverflowError
|
|
|
|
-keep public class java.lang.NoSuchFieldError
|
|
|
|
-keep public class java.lang.NoSuchMethodError
|
|
|
|
-keep public class java.lang.UnsatisfiedLinkError
|
|
|
|
-keep public class java.lang.ExceptionInInitializerError
|
|
|
|
-keep public class java.lang.OutOfMemoryError
|
|
|
|
-keep public class java.lang.reflect.InvocationTargetException
|
2009-01-02 20:25:05 +00:00
|
|
|
-keep public class java.io.IOException
|
2008-01-29 00:34:14 +00:00
|
|
|
|
2008-01-19 01:51:37 +00:00
|
|
|
# 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.**
|
|
|
|
|
2008-02-28 19:38:44 +00:00
|
|
|
# Don't optimize calls to ResourceBundle
|
|
|
|
-keep,allowshrinking,allowobfuscation public class java.util.ResourceBundle {
|
|
|
|
public static java.util.ResourceBundle getBundle(...);
|
|
|
|
}
|
|
|
|
|
2008-01-19 01:51:37 +00:00
|
|
|
# musn't obfuscate native method names:
|
2008-01-19 00:56:12 +00:00
|
|
|
|
|
|
|
-keepclasseswithmembernames class * {
|
|
|
|
native <methods>;
|
|
|
|
}
|
2008-01-29 00:34:14 +00:00
|
|
|
|
|
|
|
# Thread.run is called by name in the VM
|
|
|
|
|
|
|
|
-keepclassmembernames class java.lang.Thread { void run(); }
|