1# 2# This ProGuard configuration file illustrates how to process applications. 3# Usage: 4# java -jar proguard.jar @applications.pro 5# 6 7# Specify the input jars, output jars, and library jars. 8 9-injars in.jar 10-outjars out.jar 11 12-libraryjars <java.home>/lib/rt.jar 13#-libraryjars junit.jar 14#-libraryjars servlet.jar 15#-libraryjars jai_core.jar 16#... 17 18# Save the obfuscation mapping to a file, so you can de-obfuscate any stack 19# traces later on. Keep a fixed source file attribute and all line number 20# tables to get line numbers in the stack traces. 21# You can comment this out if you're not interested in stack traces. 22 23-printmapping out.map 24-renamesourcefileattribute SourceFile 25-keepattributes SourceFile,LineNumberTable 26 27# Preserve all annotations. 28 29-keepattributes *Annotation* 30 31# You can print out the seeds that are matching the keep options below. 32 33#-printseeds out.seeds 34 35# Preserve all public applications. 36 37-keepclasseswithmembers public class * { 38 public static void main(java.lang.String[]); 39} 40 41# Preserve all native method names and the names of their classes. 42 43-keepclasseswithmembernames,includedescriptorclasses class * { 44 native <methods>; 45} 46 47# Preserve the special static methods that are required in all enumeration 48# classes. 49 50-keepclassmembers,allowoptimization enum * { 51 public static **[] values(); 52 public static ** valueOf(java.lang.String); 53} 54 55# Explicitly preserve all serialization members. The Serializable interface 56# is only a marker interface, so it wouldn't save them. 57# You can comment this out if your application doesn't use serialization. 58# If your code contains serializable classes that have to be backward 59# compatible, please refer to the manual. 60 61-keepclassmembers class * implements java.io.Serializable { 62 static final long serialVersionUID; 63 static final java.io.ObjectStreamField[] serialPersistentFields; 64 private void writeObject(java.io.ObjectOutputStream); 65 private void readObject(java.io.ObjectInputStream); 66 java.lang.Object writeReplace(); 67 java.lang.Object readResolve(); 68} 69 70# Your application may contain more items that need to be preserved; 71# typically classes that are dynamically created using Class.forName: 72 73# -keep public class mypackage.MyClass 74# -keep public interface mypackage.MyInterface 75# -keep public class * implements mypackage.MyInterface 76