aboutsummaryrefslogtreecommitdiff
path: root/files/ant/uibuild.xml
diff options
context:
space:
mode:
Diffstat (limited to 'files/ant/uibuild.xml')
-rw-r--r--files/ant/uibuild.xml260
1 files changed, 260 insertions, 0 deletions
diff --git a/files/ant/uibuild.xml b/files/ant/uibuild.xml
new file mode 100644
index 000000000..788ca7774
--- /dev/null
+++ b/files/ant/uibuild.xml
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="android_rules" default="debug">
+
+ <!--
+ This build file is imported by the project build file. It contains
+ all the targets and tasks necessary to build Android projects, be they
+ 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 ant.properties (properties are immutable, so their
+ first definition sticks and is never changed).
+
+ Follows:
+ - custom task definitions,
+ - more properties (do not override those unless the whole build system is modified).
+ - macros used throughout the build,
+ - base build targets,
+ - debug-specific build targets,
+ - release-specific build targets,
+ - instrument-specific build targets,
+ - test project-specific build targets,
+ - install targets,
+ - help target
+ -->
+
+ <!-- ******************************************************* -->
+ <!-- **************** Overridable Properties *************** -->
+ <!-- ******************************************************* -->
+
+ <!-- You can override these values in your build.xml or ant.properties.
+ Overriding any other properties may result in broken build. -->
+
+ <!-- Tells adb which device to target. You can change this from the command line
+ by invoking "ant -Dadb.device.arg=-d" for device "ant -Dadb.device.arg=-e" for
+ the emulator. -->
+ <property name="adb.device.arg" value="" />
+
+ <!-- filename only of the output file. Cannot be a path -->
+ <property name="out.filename" value="${ant.project.name}.jar" />
+
+ <!-- compilation options -->
+ <property name="java.encoding" value="UTF-8" />
+ <property name="java.target" value="1.5" />
+ <property name="java.source" value="1.5" />
+ <property name="java.compilerargs" value="" />
+
+ <!-- Verbosity -->
+ <property name="verbose" value="false" />
+
+ <!-- ******************************************************* -->
+ <!-- ********************* Custom Tasks ******************** -->
+ <!-- ******************************************************* -->
+
+ <!-- jar file from where the tasks are loaded -->
+ <path id="android.antlibs">
+ <pathelement path="${sdk.dir}/tools/lib/ant-tasks.jar" />
+ </path>
+
+ <!-- Custom tasks -->
+ <taskdef resource="anttasks.properties" classpathref="android.antlibs" />
+
+ <!-- Emma configuration -->
+ <property name="emma.dir" value="${sdk.dir}/tools/lib" />
+ <path id="emma.lib">
+ <pathelement location="${emma.dir}/emma.jar" />
+ <pathelement location="${emma.dir}/emma_ant.jar" />
+ </path>
+ <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
+ <!-- End of emma configuration -->
+
+
+ <!-- ******************************************************* -->
+ <!-- ******************* Other Properties ****************** -->
+ <!-- ******************************************************* -->
+ <!-- overriding these properties may break the build
+ unless the whole file is updated -->
+
+ <!-- Input directories -->
+ <property name="source.dir" value="src" />
+ <property name="source.absolute.dir" location="${source.dir}" />
+ <property name="jar.libs.dir" value="libs" />
+ <property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
+
+ <!-- Output directories -->
+ <property name="out.dir" value="bin" />
+ <property name="out.absolute.dir" location="${out.dir}" />
+ <property name="out.classes.absolute.dir" location="${out.dir}/classes" />
+
+ <property name="out.file" value="${out.absolute.dir}/${out.filename}" />
+
+ <!-- tools location -->
+ <property name="android.tools.dir" location="${sdk.dir}/tools" />
+ <property name="android.platform.tools.dir" location="${sdk.dir}/platform-tools" />
+ <condition property="exe" value=".exe" else=""><os family="windows" /></condition>
+ <condition property="bat" value=".bat" else=""><os family="windows" /></condition>
+ <property name="adb" location="${android.platform.tools.dir}/adb${exe}" />
+
+ <!-- Intermediate files -->
+ <property name="dex.file.name" value="classes.dex" />
+ <property name="intermediate.dex.file" location="${out.absolute.dir}/${dex.file.name}" />
+ <property name="resource.package.file.name" value="${ant.project.name}.ap_" />
+
+ <!-- whether we need to fork javac.
+ This is only needed on Windows when running Java < 7 -->
+ <condition else="false" property="need.javac.fork">
+ <and>
+ <matches pattern="1\.[56]" string="${java.specification.version}"/>
+ <not>
+ <os family="unix"/>
+ </not>
+ </and>
+ </condition>
+
+ <macrodef name="run-tests-helper">
+ <attribute name="emma.enabled" default="false" />
+ <element name="extra-instrument-args" optional="yes" />
+ <sequential>
+ <echo level="info">Running tests ...</echo>
+ <exec executable="${adb}" failonerror="true">
+ <arg line="${adb.device.arg}" />
+ <arg value="shell" />
+ <arg value="am" />
+ <arg value="instrument" />
+ <arg value="-w" />
+ <arg value="-e" />
+ <arg value="coverage" />
+ <arg value="@{emma.enabled}" />
+ <extra-instrument-args />
+ <arg value="${project.app.package}/${test.runner}" />
+ </exec>
+ </sequential>
+ </macrodef>
+
+ <!-- ******************************************************* -->
+ <!-- ******************** Build Targets ******************** -->
+ <!-- ******************************************************* -->
+
+ <!-- Basic Ant + SDK check -->
+ <target name="-check-env">
+ <checkenv />
+ </target>
+
+ <!-- empty default pre-clean target. Create a similar target in
+ your build.xml and it'll be called instead of this one. -->
+ <target name="-pre-clean"/>
+
+ <!-- clean target -->
+ <target name="clean" depends="-check-env, -pre-clean"
+ description="Removes output files created by other targets.">
+ <delete dir="${out.absolute.dir}" verbose="${verbose}" />
+ </target>
+
+ <!-- Pre build setup -->
+ <target name="-build-setup" depends="-check-env">
+ <getbuildtools name="android.build.tools.dir" />
+ <property name="dx" location="${android.build.tools.dir}/dx${bat}" />
+
+ <echo level="info">Resolving Build Target for ${ant.project.name}...</echo>
+ <!-- load project properties, resolve Android target, library dependencies
+ and set some properties with the results.
+ All property names are passed as parameters ending in -Out -->
+ <getuitarget compileClassPathOut="project.target.class.path" />
+
+ <echo level="info">----------</echo>
+ <echo level="info">Creating output directories if needed...</echo>
+ <mkdir dir="${out.absolute.dir}" />
+ <mkdir dir="${out.classes.absolute.dir}" />
+
+ </target>
+
+ <!-- empty default pre-compile target. Create a similar target in
+ your build.xml and it'll be called instead of this one. -->
+ <target name="-pre-compile"/>
+
+ <!-- Compiles this project's .java files into .class files. -->
+ <target name="compile" depends="-build-setup, -pre-compile">
+ <javac encoding="${java.encoding}"
+ source="${java.source}" target="${java.target}"
+ debug="true" extdirs="" includeantruntime="false"
+ destdir="${out.classes.absolute.dir}"
+ bootclasspathref="project.target.class.path"
+ verbose="${verbose}"
+ fork="${need.javac.fork}">
+ <src path="${source.absolute.dir}" />
+ <compilerarg line="${java.compilerargs}" />
+ </javac>
+ </target>
+
+ <!-- empty default post-compile target. Create a similar target in
+ your build.xml and it'll be called instead of this one. -->
+ <target name="-post-compile"/>
+
+ <!-- Converts this project's .class files into .dex files -->
+ <target name="-dex" depends="compile, -post-compile">
+ <dex executable="${dx}"
+ output="${intermediate.dex.file}"
+ nolocals="@{nolocals}"
+ verbose="${verbose}">
+ <path path="${out.classes.absolute.dir}"/>
+ </dex>
+ </target>
+
+ <!-- empty default post-dex target. Create a similar target in
+ your build.xml and it'll be called instead of this one. -->
+ <target name="-post-dex"/>
+
+ <target name="-jar" depends="-dex, -post-dex" >
+ <jar destfile="${out.file}">
+ <fileset file="${intermediate.dex.file}" />
+ </jar>
+ </target>
+
+ <!-- empty default post-jar target. Create a similar target in
+ your build.xml and it'll be called instead of this one. -->
+ <target name="-post-jar"/>
+
+ <target name="build" depends="-jar, -post-jar" />
+
+ <target name="install" description="Install the test package">
+ <exec executable="${adb}" failonerror="true">
+ <arg line="${adb.device.arg}" />
+ <arg value="push" />
+ <arg value="${out.file}" />
+ <arg value="/data/local/tmp" />
+ </exec>
+ </target>
+
+ <target name="test" description="Runs tests">
+ <!-- todo: fix this -->
+ <fail message="Launching tests from Ant not supported yet" />
+
+ <exec executable="${adb}" failonerror="true">
+ <arg line="${adb.device.arg}" />
+ <arg value="shell" />
+ <arg value="uiautomator" />
+ <arg value="runtest" />
+ <arg value="${out.filename}" />
+ <arg value="-e" />
+ <arg value="class" />
+ <arg value="com.android.uiautomator.samples.skeleton.DemoTestCase" />
+ </exec>
+ </target>
+
+ <target name="help">
+ <!-- displays starts at col 13
+ |13 80| -->
+ <echo>Android Ant Build. Available targets:</echo>
+ <echo> help: Displays this help.</echo>
+ <echo> clean: Removes output files created by other targets.</echo>
+ <echo> build: Builds the test library.</echo>
+ <echo> install: Installs the library on a connected device or</echo>
+ <echo> emulator.</echo>
+ <echo> test: Runs the tests.</echo>
+ <echo></echo>
+ <echo>It is possible to mix targets. For instance:</echo>
+ <echo> ant build install test</echo>
+ <echo>This will build, install and run the test in a single command.</echo>
+ </target>
+
+</project>