Reputation: 5076
I have simple java project which refers to two (2) library jar files. Want to integrate ProGuard.
Here's my current build.xml:
<?xml version="1.0" ?>
<project name="Samples" default="dist" basedir=".">
<!-- generate JAR START -->
<description>Samples Library</description>
<!-- Setting global properties for this build -->
<property name="src" location="src" />
<property name="bin" location="bin" />
<target name="dist">
<jar destfile="Samples.jar" basedir="bin/">
<!-- Use ** to include the directory recursively -->
<include name="com/samples/**" />
</jar>
</target>
</project>
Upvotes: 2
Views: 7134
Reputation: 45648
The ProGuard distribution contains a manual page for the Ant task and also a few complete sample build files in the directory examples/ant
. You can specify any number of library jars.
Your follow-up answer suggests that you're working on an Android application. You should then have a look at the Android example.
Upvotes: 0
Reputation: 5076
I found several ways to integrate it but this is the simplest way to do it.
<?xml version="1.0" ?>
<project name="Samples" default="dist" basedir=".">
<!-- generate JAR START -->
<description>Samples Library</description>
<!-- Setting global properties for this build -->
<property name="src" location="src" />
<property name="bin" location="bin" />
<target name="dist">
<jar destfile="Samples.jar" basedir="bin/">
<!-- Use ** to include the directory recursively -->
<include name="com/samples/**" />
</jar>
</target>
<!-- generate JAR END -->
<!-- The local.properties file is created and updated by the 'android'
tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The build.properties file can be created by you and is never touched
by the 'android' tool. This is the place to change some of the
default property values used by the Ant rules.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="build.properties" />
<!-- The default.properties file is created and updated by the 'android'
tool, as well as ADT.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<property file="default.properties" />
<!-- Add Proguard Tasks -->
<property name="proguard.jar" location="proguard/lib/proguard.jar" />
<taskdef resource="proguard/ant/task.properties"
classpath="${proguard.jar}" />
<proguard configuration="proguard.cfg"/>
</project>
Here's the proguard.cfg:
-injars Samples.jar
-outjars Samples-out.jar
-libraryjars libs/android.jar
-printmapping out.map
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
Upvotes: 3