<?xml version="1.0" encoding="UTF-8"?> <project name=".Test" default="debug-obf"> <!-- Echo the Java JDK version. If needed, link /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK to 1.6 --> <echo message="ant is using Java sdk ${ant.java.version}" /> <!-- Some properties. Change paths as needed --> <property name="JAVA_HOME" value="C:\Program Files\Java\jdk1.6.0_10\bin" /> <property name="sdk-location" value="E:/android-sdk-windows" /> <property name="sdk-folder" value="E:/android-sdk-windows" /> <property name="proguard-home" value="E:/android-sdk-windows/proguard4.5.1/lib" /> <property name="proguard-jar" value="E:/android-sdk-windows/proguard4.5.1/lib" /> <property name="outdir" value="bin" /> <property name="outdir-classes" value="${outdir}/classes" /> <property name="library-jar" value="libs" /> <property name="android-jar" value="${sdk-folder}/platforms/android-3/android.jar" /> <echo>${java.home}</echo> <!-- Template from command 'android create project' Uses: ${sdk-folder}/platforms/android-1.5/templates/android_rules.xml --> <property file="local.properties" /> <property file="build.properties" /> <property file="default.properties" /> <path id="android.antlibs"> <pathelement path="${sdk-location}/tools/lib/anttasks.jar" /> <pathelement path="${sdk-location}/tools/lib/sdklib.jar" /> <pathelement path="${sdk-location}/tools/lib/androidprefs.jar" /> <pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" /> <pathelement path="${sdk-location}/tools/lib/jarutils.jar" /> </path> <taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" /> <setup /> <setup /> <!-- Package the application and sign it with a debug key, with obfuscation This is the default target when building. It is used for debug. --> <target name="debug-obf" depends="dex-obf, package-resources"> <apkbuilder outfolder="${out-folder}" basename="${ant.project.name}" signed="true" verbose="false"> <file path="${intermediate-dex}" /> <sourcefolder path="${source-folder}" /> <jarfolder path="${external-libs-folder}" /> <nativefolder path="${native-libs-folder}" /> </apkbuilder> </target> <!-- Package the application without signing it, with obfuscation This allows for the application to be signed later with an official publishing key. --> <target name="release-obf" depends="dex-obf, package-resources"> <apkbuilder outfolder="${out-folder}" basename="${ant.project.name}" signed="false" verbose="false"> <file path="${intermediate-dex}" /> <sourcefolder path="${source-folder}" /> <jarfolder path="${external-libs-folder}" /> <nativefolder path="${native-libs-folder}" /> </apkbuilder> <echo>All generated packages need to be signed with jarsigner before they are published.</echo> </target> <!-- Using proguard for the actual obfuscation. Referenced from: http://code.google.com/p/zxing/source/browse/trunk/android-m3/build.xml?r=321 --> <target name="optimize" depends="compile"> <jar basedir="${outdir-classes}" destfile="temp.jar" /> <java jar="${proguard-home}/proguard.jar" fork="true" failοnerrοr="true"> <jvmarg value="-Dmaximum.inlined.code.length=32" /> <arg value="-injars temp.jar" /> <arg value="-outjars optimized.jar" /> <arg value="-libraryjars ${android-jar}" /> <!-- <arg value="-libraryjars ${library-jar}/some_lib_used.jar"/> --> <arg value="-dontpreverify" /> <arg value="-dontoptimize" /> <arg value="-dontusemixedcaseclassnames" /> <arg value="-repackageclasses ''" /> <arg value="-allowaccessmodification" /> <arg value="-keep public class com.demo.Test" /> <!-- <arg value="-keep public class com.just2me.obfapp.receiver.*"/> --> <arg value="-optimizationpasses 1" /> <arg value="-verbose" /> <arg value="-dontskipnonpubliclibraryclasses" /> <arg value="-dontskipnonpubliclibraryclassmembers" /> </java> <delete file="temp.jar" /> <delete dir="${outdir-classes}" /> <mkdir dir="${outdir-classes}" /> <unzip src="optimized.jar" dest="${outdir-classes}" /> <delete file="optimized.jar" /> </target> <!-- Convert into .dex --> <target name="dex-obf" depends="compile, optimize"> <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo> <apply executable="${dx}" failοnerrοr="true" parallel="true"> <arg value="--dex" /> <arg value="--output=${intermediate-dex-location}" /> <arg path="${out-classes-location}" /> <fileset dir="${external-libs-folder}" includes="*.jar" /> </apply> </target> <!-- Cleaning up the house --> <target name="clean"> <delete dir="${outdir}" /> </target> </project>