Home | History | Annotate | Download | only in annotations
      1 #
      2 # This ProGuard configuration file illustrates how to use annotations for
      3 # specifying which classes and class members should be kept.
      4 # Usage:
      5 #     java -jar proguard.jar @examples.pro
      6 #
      7 
      8 # Specify the input, output, and library jars.
      9 # This is assuming the code has been compiled in the examples directory.
     10 
     11 -injars  examples(*.class)
     12 -outjars out
     13 
     14 -libraryjars <java.home>/lib/rt.jar
     15 
     16 # Some important configuration is based on the annotations in the code.
     17 # We have to specify what the annotations mean to ProGuard.
     18 
     19 -include lib/annotations.pro
     20 
     21 #
     22 # We can then still add any other options that might be useful.
     23 #
     24 
     25 # Print out a list of what we're preserving.
     26 
     27 -printseeds
     28 
     29 # Preserve all annotations themselves.
     30 
     31 -keepattributes *Annotation*
     32 
     33 # Preserve all native method names and the names of their classes.
     34 
     35 -keepclasseswithmembernames class * {
     36     native <methods>;
     37 }
     38 
     39 # Preserve the special static methods that are required in all enumeration
     40 # classes.
     41 
     42 -keepclassmembers class * extends java.lang.Enum {
     43     public static **[] values();
     44     public static ** valueOf(java.lang.String);
     45 }
     46 
     47 # Explicitly preserve all serialization members. The Serializable interface
     48 # is only a marker interface, so it wouldn't save them.
     49 # You can comment this out if your application doesn't use serialization.
     50 # If your code contains serializable classes that have to be backward 
     51 # compatible, please refer to the manual.
     52 
     53 -keepclassmembers class * implements java.io.Serializable {
     54     static final long serialVersionUID;
     55     static final java.io.ObjectStreamField[] serialPersistentFields;
     56     private void writeObject(java.io.ObjectOutputStream);
     57     private void readObject(java.io.ObjectInputStream);
     58     java.lang.Object writeReplace();
     59     java.lang.Object readResolve();
     60 }
     61