to find the SDK location, I've removed it and pointed us at the global ZXing build.properties. -->
<property file="../build.properties"/>
<!-- Parts of the Android build system insist on the name 'sdk-location', so alias it. -->
- <property name="sdk-location" value="${android-home}"/>
+ <property name="sdk.dir" value="${android-home}"/>
<!-- 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
should be checked in in Version Control Systems.
-->
- <!--<property file="build.properties"/>-->
+ <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
<!-- Custom Android task to deal with the project target, and import the proper rules.
This requires ant 1.6.0 or above. -->
<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" />
+ <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
+ <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
+ <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
+ <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
+ <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
</path>
<taskdef name="setup"
<!-- Properties -->
- <property name="android-tools" value="${sdk-location}/tools" />
+ <property name="android-tools" value="${sdk.dir}/tools" />
<!-- Input directories -->
<property name="source-folder" value="src" />
<property name="source-location" value="${basedir}/${source-folder}" />
<!-- folder for the 3rd party java libraries -->
- <property name="external-libs-folder" value="../core" />
+ <!--<property name="external-libs-folder" value="../core" />-->
<!-- folder for the native libraries -->
<property name="native-libs-folder" value="libs" />
<!-- rules -->
- <!-- Create the output directories if they don't exist yet. -->
- <target name="dirs">
+ <!-- Create the output directories if they don't exist yet. All builds do a clean first
+ to prevent stale resources and to make ProGuard happy. -->
+ <target name="dirs" depends="clean">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${resource-folder}" />
<mkdir dir="${external-libs-folder}" />
<arg value="-S" />
<arg path="${resource-folder}" />
<arg value="-I" />
- <arg path="${android-jar}" />
+ <arg path="${android.jar}" />
</exec>
</target>
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="resource-src, aidl">
- <javac encoding="ascii" target="1.5" debug="true" extdirs=""
+ <javac encoding="ascii" target="1.5" debug="false" extdirs=""
destdir="${out-classes}"
bootclasspathref="android.target.classpath">
<src path="${source-folder}" />
<src path="${gen-folder}" />
<classpath>
<fileset dir="${external-libs-folder}" includes="*.jar"/>
+ <!-- yeah, want to not use this mechanism above -->
+ <pathelement path="../core/core.jar"/>
<pathelement path="${main-out-classes}"/>
</classpath>
</javac>
+
+ <unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
+
+ <antcall target="optimize"/>
+ </target>
+
+ <target name="optimize" unless="no-optimize">
+ <mkdir dir="optimized"/>
+ <property name="libraryjars.path" refid="android.target.classpath"/>
+ <java jar="${proguard-jar}" fork="true" failonerror="true">
+ <jvmarg value="-Dmaximum.inlined.code.length=48"/>
+ <arg value="-injars ${out-classes}"/>
+ <arg value="-outjars optimized"/>
+ <arg value="-libraryjars ${libraryjars.path}"/>
+ <arg value="-keep class com.google.zxing.client.androidtest.*Activity"/>
+ <arg value="-keep class com.google.zxing.client.androidtest.ViewfinderView { public * ; }"/>
+ <arg value="-target 5"/>
+ <arg value="-optimizationpasses 4"/>
+ <arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
+ <arg value="-dontshrink"/>
+ <arg value="-dontobfuscate"/>
+ <arg value="-dontskipnonpubliclibraryclasses"/>
+ <arg value="-verbose"/>
+ <arg value="-dump proguard-dump.txt"/>
+ </java>
+ <delete dir="${out-classes}"/>
+ <move file="optimized" tofile="${out-classes}"/>
</target>
<!-- Convert this project's .class files into .dex files. -->
manifest="AndroidManifest.xml"
resources="${resource-folder}"
assets="${asset-folder}"
- androidjar="${android-jar}"
+ androidjar="${android.jar}"
outfolder="${out-folder}"
basename="${ant.project.name}" />
</target>
+ <!--
+ Getting an error like this?
+
+ [apply] UNEXPECTED TOP-LEVEL EXCEPTION:
+ [apply] com.android.dx.cf.code.SimException: local variable type
+ mismatch: attempt to set or access a value of type int using a local
+ variable of type com.google.zxing.qrcode.decoder.Version. This is
+ symptomatic of .class transformation tools that ignore local variable
+ information.
+
+ Build core/ with the 'build-no-debug' target. It's a long story.
+ -->
+
<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-resources">
<jarfolder path="${external-libs-folder}" />
<nativefolder path="${native-libs-folder}" />
</apkbuilder>
+ <copy file="${out-folder}/ZXingTest-debug.apk" tofile="${out-folder}/temp.apk" overwrite="true"/>
+ <exec executable="${android-tools}/zipalign">
+ <arg value="-f"/>
+ <arg value="-v"/>
+ <arg value="4"/>
+ <arg value="${out-folder}/temp.apk"/>
+ <arg value="${out-folder}/ZXingTest-debug.apk"/>
+ </exec>
</target>
<!-- Package the application without signing it.
<nativefolder path="${native-libs-folder}" />
</apkbuilder>
<echo>All generated packages need to be signed with jarsigner before they are published.</echo>
+ <echo>Also run zipalign -f -v 4 ZXingTest.apk ZXingTest-aligned.apk after signing</echo>
</target>
- <!-- Install the package on the default emulator -->
+ <!-- Install (or reinstall) the package on the default emulator -->
<target name="install" depends="debug">
- <echo>Installing ${out-debug-package} onto default emulator...</echo>
- <exec executable="${adb}" failonerror="true">
- <arg value="install" />
- <arg path="${out-debug-package}" />
- </exec>
- </target>
-
- <target name="reinstall" depends="debug">
<echo>Installing ${out-debug-package} onto default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="install" />
<echo>Uninstalling ${application-package} from the default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="uninstall" />
- <arg path="${application-package}" />
+ <arg value="${application-package}" />
</exec>
</target>