-<?xml version="1.0" ?>
-
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2008 Google Inc.
<!-- This is a mildly hacked version of the auto-generated project
build.xml file. -->
-<project name="BarcodeReader" default="package">
+<project name="BarcodeReaderM5" default="package">
<property file="../build.properties"/>
<property name="sdk-folder" value="${android-home}"/>
<property name="android-tools" value="${sdk-folder}/tools"/>
+ <property name="android-framework" value="${android-tools}/lib/framework.aidl"/>
<!-- The intermediates directory -->
<!-- Eclipse uses "bin" for its own output, so we do the same. -->
<!-- Intermediate files -->
<property name="dex-file" value="classes.dex"/>
- <property name="intermediate-dex" value="${outdir}/${dex-file}"/>
+ <property name="intermediate-dex" location="${outdir}/${dex-file}"/>
<!-- The final package file to generate -->
- <property name="out-package" value="${outdir}/${ant.project.name}.apk"/>
+ <property name="out-package" value="${outdir}/BarcodeReader.apk"/>
<!-- Tools -->
<property name="aapt" value="${android-tools}/aapt"/>
<property name="aidl" value="${android-tools}/aidl"/>
- <property name="dx" value="${android-tools}/dx"/>
+ <!-- dx is a special case as it is a .bat file on Windows -->
+ <condition property="dx" value="${android-tools}/dx.bat" else="${android-tools}/dx">
+ <os family="windows"/>
+ </condition>
+ <property name="adb" value="${android-tools}/adb" />
+ <property name="android-jar" value="${sdk-folder}/android.jar" />
<property name="zip" value="zip"/>
- <property name="android-jar" value="${sdk-folder}/android.jar"/>
<!-- Rules -->
<target name="init">
<tstamp/>
- <fail message="Please set 'android-home' in build.properties">
+ <fail message="Please set 'android-m5-home' in build.properties">
<condition>
<not>
<available file="${android-home}" type="dir"/>
<!-- Generate the R.java file for this project's resources. -->
<target name="resource-src" depends="dirs">
+
+ <copy file="strings.xml.template" tofile="res/values/strings.xml" overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${version}"/>
+ </filterset>
+ </copy>
+
<echo>Generating R.java...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="compile"/>
<!-- Generate java classes from .aidl files. -->
<target name="aidl" depends="dirs">
<apply executable="${aidl}" failonerror="true">
+ <arg value="-p${android-framework}"/>
+ <arg value="-I${srcdir}"/>
<fileset dir="${srcdir}">
<include name="**/*.aidl"/>
</fileset>
</target>
<!-- Compile this project's .java files into .class files. -->
- <target name="compile" depends="init, dirs, resource-src, aidl">
+ <target name="compile" depends="init, clean, dirs, resource-src, aidl">
<javac encoding="ascii" target="1.5" debug="true" optimize="true" extdirs=""
srcdir="."
destdir="${outdir-classes}"
<target name="optimize" depends="compile" unless="debug">
<jar basedir="${outdir-classes}" destfile="temp.jar"/>
<java jar="${WTK-home}/bin/proguard.jar" fork="true" failonerror="true">
- <arg value="-injars temp.jar"/>
- <arg value="-outjars optimized.jar"/>
- <arg value="-libraryjars ${android-jar}"/>
- <arg value="-dontpreverify"/>
- <arg value="-dontobfuscate"/>
- <arg value="-keep public class com.google.zxing.client.android.BarcodeReaderCaptureActivity"/>
- <arg value="-optimizationpasses 4"/>
- <arg value="-verbose"/>
- </java>
- <delete file="temp.jar"/>
- <delete dir="${outdir-classes}"/>
- <mkdir dir="${outdir-classes}"/>
- <unzip src="optimized.jar" dest="${outdir-classes}"/>
- <delete file="optimized.jar"/>
+ <jvmarg value="-Dmaximum.inlined.code.length=32"/>
+ <arg value="-injars temp.jar"/>
+ <arg value="-outjars optimized.jar"/>
+ <arg value="-libraryjars ${android-jar}"/>
+ <arg value="-dontpreverify"/>
+ <arg value="-dontobfuscate"/>
+ <!-- Temporary workaround to keep important stuff in the client, while inlining core. -->
+ <arg value="-keep class com.google.zxing.client.android.BarcodeReaderCaptureActivity { *; }"/>
+ <arg value="-keep class com.google.zxing.client.android.CameraManager { *; }"/>
+ <arg value="-keep class com.google.zxing.client.android.CameraThread { *; }"/>
+ <arg value="-optimizationpasses 7"/>
+ <arg value="-overloadaggressively"/>
+ <arg value="-verbose"/>
+ <!-- Needed to allow getters which refer to private members to be inlined. -->
+ <arg value="-allowaccessmodification"/>
+ </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 this project's .class files into .dex files. -->
<target name="dex" depends="compile, optimize">
- <condition property="locals" value="full">
+ <condition property="locals" value="full" else="none">
<isset property="debug"/>
</condition>
- <condition property="locals" value="none">
- <not>
- <isset property="debug"/>
- </not>
- </condition>
- <condition property="positions" value="lines">
+ <condition property="positions" value="lines" else="none">
<isset property="debug"/>
</condition>
- <condition property="positions" value="none">
- <not>
- <isset property="debug"/>
- </not>
- </condition>
<exec executable="${dx}" failonerror="true">
- <arg value="-JXmx384M"/>
<arg value="--dex"/>
<arg value="--output=${intermediate-dex}"/>
<arg value="--locals=${locals}"/>
<arg value="--positions=${positions}"/>
- <arg path="${outdir-classes}"/>
+ <arg path="${basedir}/${outdir-classes}"/>
</exec>
</target>
update="true"/>
</target>
- <!-- Put the project's .dex files into the output package file. -->
+ <!-- Put the project's .dex files into the output package file.
+ Use the "zip" command, available on most un*x/Linux/MacOS systems,
+ to create the new package (Ant 1.7 has an internal 'zip' command,
+ however Ant 1.6.5 lacks it and is still widely installed.)
+ -->
<target name="package-dex" depends="dex, package-res">
<echo>Packaging dex...</echo>
<exec executable="${zip}" failonerror="true">
<!-- Create the package file for this project from the sources. -->
<target name="package" depends="package-dex"/>
+ <!-- Install package on the default emulator -->
+ <target name="install">
+ <echo>Sending package to default emulator...</echo>
+ <exec executable="${adb}" failonerror="true">
+ <arg value="install" />
+ <arg value="${out-package}" />
+ </exec>
+ </target>
+
<target name="clean">
<delete dir="${outdir}"/>
</target>