aboutsummaryrefslogtreecommitdiffstats
path: root/files/ant/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'files/ant/build.xml')
-rw-r--r--files/ant/build.xml113
1 files changed, 84 insertions, 29 deletions
diff --git a/files/ant/build.xml b/files/ant/build.xml
index cc8f398..91dbb1f 100644
--- a/files/ant/build.xml
+++ b/files/ant/build.xml
@@ -7,7 +7,7 @@
regular projects, library projects, or test projects.
At the beginning of the file is a list of properties that can be overridden
- by adding them to your build.properties (properties are immutable, so their
+ by adding them to your ant.properties (properties are immutable, so their
first definition sticks and is never changed).
Follows:
@@ -23,7 +23,9 @@
- help target
-->
- <!-- ********** Overrideable Properties ********** -->
+ <!-- ******************************************************* -->
+ <!-- *************** Overrideable Properties *************** -->
+ <!-- ******************************************************* -->
<!-- You can override these values in your build.xml or build.properties.
Overriding any other properties may result in broken build. -->
@@ -52,7 +54,9 @@
<!-- Verbosity -->
<property name="verbose" value="false" />
- <!-- ********** Custom Tasks ********** -->
+ <!-- ******************************************************* -->
+ <!-- ********************* Custom Tasks ******************** -->
+ <!-- ******************************************************* -->
<!-- jar file from where the tasks are loaded -->
<path id="android.antlibs">
@@ -76,6 +80,10 @@
classname="com.android.ant.RenderScriptTask"
classpathref="android.antlibs" />
+ <taskdef name="buildconfig"
+ classname="com.android.ant.BuildConfigTask"
+ classpathref="android.antlibs" />
+
<taskdef name="dex"
classname="com.android.ant.DexExecTask"
classpathref="android.antlibs" />
@@ -106,7 +114,9 @@
<!-- End of emma configuration -->
- <!-- ********** Other Properties ********** -->
+ <!-- ******************************************************* -->
+ <!-- ******************* Other Properties ****************** -->
+ <!-- ******************************************************* -->
<!-- overriding these properties may break the build
unless the whole file is updated -->
@@ -174,7 +184,9 @@
<!-- properties for packaging -->
<property name="build.packaging.nocrunch" value="true" />
- <!-- ********** Macros ********** -->
+ <!-- ******************************************************* -->
+ <!-- ************************ Macros *********************** -->
+ <!-- ******************************************************* -->
<!-- macro to do a task on if project.is.library is false.
elseText attribute is displayed otherwise -->
@@ -244,9 +256,7 @@
<dex executable="${dx}"
output="${intermediate.dex.file}"
nolocals="@{nolocals}"
- verbose="${verbose}"
- previousBuildType="${build.last.target}"
- buildType="${build.target}">
+ verbose="${verbose}">
<path path="${out.dex.input.absolute.dir}"/>
<path refid="out.dex.jar.input.ref" />
<external-libs />
@@ -351,7 +361,9 @@
</sequential>
</macrodef>
- <!-- ********** Build Targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- ******************** Build Targets ******************** -->
+ <!-- ******************************************************* -->
<!-- this target simply force running -setup making
the project info be read. To be used as
@@ -444,13 +456,12 @@
<!-- read the previous build mode -->
<property file="${out.build.prop.file}" />
- <!-- if empty the prop won't be set, so set it to the current target
- to provide a default value equal to the current build -->
- <property name="build.last.target" value="${build.target}" />
- <!-- also set the default value for whether the build is instrumented -->
- <property name="build.last.is.instrumented" value="${build.is.instrumented}" />
- <property name="build.last.is.packaging.debug" value="${build.is.packaging.debug}" />
- <property name="build.last.is.signing.debug" value="${build.is.signing.debug}" />
+ <!-- if empty the props won't be set, meaning it's a new build.
+ To force a build, set the prop to empty values. -->
+ <property name="build.last.target" value="" />
+ <property name="build.last.is.instrumented" value="" />
+ <property name="build.last.is.packaging.debug" value="" />
+ <property name="build.last.is.signing.debug" value="" />
<!-- compile the libraries if any -->
<if>
@@ -502,20 +513,39 @@
<path refid="project.libraries.jars" />
</path>
- <!-- special case for instrumented: if the previous build was
- instrumented but not this one, clear out the compiled code -->
+ <!-- If the "debug" build type changed, clear out the compiled code.
+ This is to make sure the new BuildConfig.DEBUG value is picked up
+ as javac can't deal with this type of change in its dependency computation. -->
<if>
<condition>
<and>
- <istrue value="${build.last.is.instrumented}" />
- <isfalse value="${build.is.instrumented}" />
+ <length string="${build.last.is.packaging.debug}" trim="true" when="greater" length="0" />
+ <not><equals
+ arg1="${build.is.packaging.debug}"
+ arg2="${build.last.is.packaging.debug}" /></not>
</and>
</condition>
<then>
- <echo>Switching from instrumented to non-instrumented build.</echo>
- <echo>Deleting previous compilation output:</echo>
+ <echo>Switching between debug and non debug build: Deleting previous compilation output...</echo>
<delete dir="${out.classes.absolute.dir}" verbose="${verbose}" />
</then>
+ <else>
+ <!-- Else, we may still need to clean the code, for another reason.
+ special case for instrumented: if the previous build was
+ instrumented but not this one, clear out the compiled code -->
+ <if>
+ <condition>
+ <and>
+ <istrue value="${build.last.is.instrumented}" />
+ <isfalse value="${build.is.instrumented}" />
+ </and>
+ </condition>
+ <then>
+ <echo>Switching from instrumented to non-instrumented build: Deleting previous compilation output...</echo>
+ <delete dir="${out.classes.absolute.dir}" verbose="${verbose}" />
+ </then>
+ </if>
+ </else>
</if>
<echo>Creating output directories if needed...</echo>
@@ -569,6 +599,17 @@
<res path="${out.res.absolute.dir}" />
<res path="${resource.absolute.dir}" />
</aapt>
+
+ <echo>----------</echo>
+ <echo>Handling BuildConfig class...</echo>
+ <xpath input="AndroidManifest.xml" expression="/manifest/@package"
+ output="manifest.package" />
+ <buildconfig
+ genFolder="${gen.absolute.dir}"
+ package="${manifest.package}"
+ buildType="${build.is.packaging.debug}"
+ previousBuildType="${build.last.is.packaging.debug}"/>
+
</do-only-if-manifest-hasCode>
</target>
@@ -593,7 +634,7 @@
</condition>
<javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
- debug="true" extdirs=""
+ debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="android.target.classpath"
verbose="${verbose}"
@@ -817,7 +858,9 @@
message="Cannot run two different modes at the same time. If you are running more than one debug/release/instrument type targets, call them from different Ant calls." />
</target>
- <!-- ********** Debug specific targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- **************** Debug specific targets *************** -->
+ <!-- ******************************************************* -->
<target name="-set-debug-files" depends="-set-mode-check">
@@ -863,7 +906,9 @@
</target>
- <!-- ********** Release specific targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- *************** Release specific targets ************** -->
+ <!-- ******************************************************* -->
<!-- called through target 'release'. Only executed if the keystore and
key alias are known but not their password. -->
@@ -974,7 +1019,9 @@
<record-build-info />
</target>
- <!-- ********** Instrumented specific targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- ************ Instrumented specific targets ************ -->
+ <!-- ******************************************************* -->
<!-- These targets are specific for the project under test when it
gets compiled by the test projects in a way that will make it
@@ -1001,7 +1048,9 @@
<record-build-info />
</target>
- <!-- ********** Test project specific targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- ************ Test project specific targets ************ -->
+ <!-- ******************************************************* -->
<!-- enable code coverage -->
<target name="emma">
@@ -1089,7 +1138,9 @@
</target>
- <!-- ********** Install/uninstall specific targets ********** -->
+ <!-- ******************************************************* -->
+ <!-- ********** Install/uninstall specific targets ********* -->
+ <!-- ******************************************************* -->
<target name="install"
description="Installs the newly build package. Must be used in conjunction with a build target
@@ -1107,7 +1158,7 @@
<resourceexists>
<file file="${out.final.file}"/>
</resourceexists>
- </condition>
+ </condition>
<then>
<echo>Installing ${out.final.file} onto default emulator or device...</echo>
<exec executable="${adb}" failonerror="true">
@@ -1198,6 +1249,10 @@
</target>
+ <!-- ******************************************************* -->
+ <!-- ************************* Help ************************ -->
+ <!-- ******************************************************* -->
+
<target name="help">
<!-- displays starts at col 13
|13 80| -->