| <!-- This Ant build file illustrates how to process a program library, |
| such that it remains usable as a library. |
| Usage: ant -f library.xml --> |
| |
| <project name="Library" default="obfuscate" basedir="../.."> |
| |
| <target name="obfuscate"> |
| <taskdef resource="proguard/ant/task.properties" |
| classpath="lib/proguard.jar" /> |
| |
| <proguard printmapping="out.map" |
| renamesourcefileattribute="SourceFile"> |
| |
| <!-- Specify the input jars, output jars, and library jars. --> |
| |
| <injar file="library.jar" /> |
| <outjar file="library_out.jar" /> |
| |
| <libraryjar file="${java.home}/lib/rt.jar" /> |
| |
| <!-- Keep some useful attributes. --> |
| |
| <keepattribute name="InnerClasses" /> |
| <keepattribute name="SourceFile" /> |
| <keepattribute name="LineNumberTable" /> |
| <keepattribute name="Deprecated" /> |
| <keepattribute name="*Annotation*" /> |
| |
| <!-- Preserve all public classes, and their public and protected fields |
| and methods. --> |
| |
| <keep access="public"> |
| <field access="public protected" /> |
| <method access="public protected" /> |
| </keep> |
| |
| <!-- Preserve all .class method names. --> |
| |
| <keepclassmembernames access="public"> |
| <method type ="java.lang.Class" |
| name ="class$" |
| parameters="java.lang.String" /> |
| <method type ="java.lang.Class" |
| name ="class$" |
| parameters="java.lang.String,boolean" /> |
| </keepclassmembernames> |
| |
| <!-- Preserve all native method names and the names of their classes. --> |
| |
| <keepclasseswithmembernames> |
| <method access="native" /> |
| </keepclasseswithmembernames> |
| |
| <!-- Preserve the methods that are required in all enumeration classes. --> |
| |
| <keepclassmembers extends="java.lang.Enum"> |
| <method access="public static" |
| type="**[]" |
| name="values" |
| parameters="" /> |
| <method access="public static" |
| type="**" |
| name="valueOf" |
| parameters="java.lang.String" /> |
| </keepclassmembers> |
| |
| <!-- Explicitly preserve all serialization members. The Serializable |
| interface is only a marker interface, so it wouldn't save them. |
| You can comment this out if your library doesn't use serialization. |
| If your code contains serializable classes that have to be backward |
| compatible, please refer to the manual. --> |
| |
| <keepclassmembers implements="java.io.Serializable"> |
| <field access ="final" |
| type ="long" |
| name ="serialVersionUID" /> |
| <field access ="static final" |
| type ="java.io.ObjectStreamField[]" |
| name ="serialPersistentFields" /> |
| <method access ="private" |
| type ="void" |
| name ="writeObject" |
| parameters="java.io.ObjectOutputStream" /> |
| <method access ="private" |
| type ="void" |
| name ="readObject" |
| parameters="java.io.ObjectInputStream" /> |
| <method type ="java.lang.Object" |
| name ="writeReplace" |
| parameters="" /> |
| <method type ="java.lang.Object" |
| name ="readResolve" |
| parameters="" /> |
| </keepclassmembers> |
| |
| <!-- Your application may contain more items that need to be preserved; |
| typically classes that are dynamically created using Class.forName --> |
| |
| </proguard> |
| </target> |
| |
| </project> |