| <!-- This Ant build file illustrates how to process applications, |
| using a full-blown XML configuration. |
| Usage: ant -f applications3.xml --> |
| |
| <project name="Applications" default="obfuscate" basedir="../.."> |
| |
| <target name="obfuscate"> |
| <taskdef resource="proguard/ant/task.properties" |
| classpath="lib/proguard.jar" /> |
| |
| <proguard printseeds="on" |
| printmapping="out.map" |
| renamesourcefileattribute="SourceFile"> |
| |
| <!-- Specify the input jars, output jars, and library jars. --> |
| |
| <injar file="in.jar" /> |
| <outjar file="out.jar" /> |
| |
| <libraryjar file="${java.home}/lib/rt.jar" /> |
| <!-- libraryjar file="junit.jar" / --> |
| <!-- libraryjar file="servlet.jar" / --> |
| <!-- libraryjar file="jai_core.jar" / --> |
| <!-- ... / --> |
| |
| <!-- Preserve line numbers in the obfuscated stack traces. --> |
| |
| <keepattribute name="LineNumberTable" /> |
| <keepattribute name="SourceFile" /> |
| |
| <!-- Preserve all annotations. --> |
| |
| <keepattribute name="*Annotation*" /> |
| |
| <!-- Preserve all public applications. --> |
| |
| <keepclasseswithmembers access="public"> |
| <method access ="public static" |
| type ="void" |
| name ="main" |
| parameters="java.lang.String[]" /> |
| </keepclasseswithmembers> |
| |
| <!-- Preserve all native method names and the names of their classes. --> |
| |
| <keepclasseswithmembernames includedescriptorclasses="true"> |
| <method access="native" /> |
| </keepclasseswithmembernames> |
| |
| <!-- Preserve the methods that are required in all enumeration classes. --> |
| |
| <keepclassmembers allowoptimization="true" type="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 ="static 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> |