我有一个简单的java项目,它引用了两个库jar文件。想要整合ProGuard。
这是我当前的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>
我找到了几种方法来整合它,但这是最简单的方法。
<?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>
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();
}
ProGuard发行版包含Ant任务的手册页以及目录examples/ant
中的一些完整的示例构建文件。您可以指定任意数量的库jar。
你的后续回答表明你正在开发Android应用程序。然后你应该看看Android的例子。