diff options
author | Kenny Root <kenny@the-b.org> | 2009-12-18 19:43:15 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-12-18 19:43:15 +0000 |
commit | bada2a32d3e215df56ccee2d698c65182373ce9d (patch) | |
tree | 94cfa4f658a3976fc0fdb56f046e3cb9b5e1c9c2 /build.xml | |
parent | f258841d5aa686037354f156a57beb601baeaa4d (diff) | |
download | connectbot-bada2a32d3e215df56ccee2d698c65182373ce9d.tar.gz connectbot-bada2a32d3e215df56ccee2d698c65182373ce9d.tar.bz2 connectbot-bada2a32d3e215df56ccee2d698c65182373ce9d.zip |
Update README and build.xml for Eclair
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@446 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'build.xml')
-rw-r--r-- | build.xml | 523 |
1 files changed, 371 insertions, 152 deletions
@@ -11,12 +11,12 @@ used by the Ant rules. Here are some properties you may want to change/update: - application-package + application.package the name of your application package as defined in the manifest. Used by the 'uninstall' rule. - source-folder + source.dir the name of the source folder. Default is 'src'. - out-folder + out.dir the name of the output folder. Default is 'bin'. Properties related to the SDK location or the project target should be updated @@ -37,16 +37,16 @@ <!-- 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" classname="com.android.ant.SetupTask" - classpathref="android.antlibs"/> + classpathref="android.antlibs" /> <!-- Execute the Android Setup task that will setup some properties specific to the target, and import the rules files. @@ -62,109 +62,240 @@ <!-- Custom tasks --> <taskdef name="aaptexec" classname="com.android.ant.AaptExecLoopTask" - classpathref="android.antlibs"/> + classpathref="android.antlibs" /> <taskdef name="apkbuilder" classname="com.android.ant.ApkBuilderTask" + classpathref="android.antlibs" /> + + <taskdef name="xpath" + classname="com.android.ant.XPathTask" classpathref="android.antlibs"/> <!-- Properties --> - <property name="android-tools" value="${sdk-location}/tools" /> - - <!-- Input directories --> - <property name="source-folder" value="src" /> - <property name="gen-folder" value="gen" /> - <property name="resource-folder" value="res" /> - <property name="asset-folder" value="assets" /> - <property name="source-location" value="${basedir}/${source-folder}" /> + <!-- 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="" /> - <!-- folder for the 3rd party java libraries --> - <property name="external-libs-folder" value="libs" /> + <property name="android.tools.dir" location="${sdk.dir}/tools" /> + <!-- Name of the application package extracted from manifest file --> + <xpath input="AndroidManifest.xml" expression="/manifest/@package" + output="manifest.package" /> - <!-- folder for the native libraries --> - <property name="native-libs-folder" value="libs" /> + <!-- Input directories --> + <property name="source.dir" value="src" /> + <property name="source.absolute.dir" location="${source.dir}" /> + <property name="gen.dir" value="gen" /> + <property name="gen.absolute.dir" location="${gen.dir}" /> + <property name="resource.dir" value="res" /> + <property name="resource.absolute.dir" location="${resource.dir}" /> + <property name="asset.dir" value="assets" /> + <property name="asset.absolute.dir" location="${asset.dir}" /> + + <!-- Directory for the third party java libraries --> + <property name="external.libs.dir" value="libs" /> + <property name="external.libs.absolute.dir" location="${external.libs.dir}" /> + + <!-- Directory for the native libraries --> + <property name="native.libs.dir" value="libs" /> + <property name="native.libs.absolute.dir" location="${native.libs.dir}" /> <!-- Output directories --> - <property name="gen-folder" value="gen" /> - <property name="out-folder" value="bin" /> - <property name="out-classes" value="${out-folder}/classes" /> - <property name="out-classes-location" value="${basedir}/${out-classes}"/> - <!-- out folders for a parent project if this project is an instrumentation project --> - <property name="main-out-folder" value="../${out-folder}" /> - <property name="main-out-classes" value="${main-out-folder}/classes"/> + <property name="out.dir" value="bin" /> + <property name="out.absolute.dir" location="${out.dir}" /> + <property name="out.classes.dir" value="${out.absolute.dir}/classes" /> + <property name="out.classes.absolute.dir" location="${out.classes.dir}" /> <!-- Intermediate files --> - <property name="dex-file" value="classes.dex" /> - <property name="intermediate-dex" value="${out-folder}/${dex-file}" /> - <!-- dx does not properly support incorrect / or \ based on the platform - and Ant cannot convert them because the parameter is not a valid path. - Because of this we have to compute different paths depending on the platform. --> - <condition property="intermediate-dex-location" - value="${basedir}\${intermediate-dex}" - else="${basedir}/${intermediate-dex}" > - <os family="windows"/> - </condition> + <property name="dex.file.name" value="classes.dex" /> + <property name="intermediate.dex.file" location="${out.absolute.dir}/${dex.file.name}" /> <!-- The final package file to generate --> - <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/> + <property name="out.debug.unaligned.package" + location="${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk" /> + <property name="out.debug.package" + location="${out.absolute.dir}/${ant.project.name}-debug.apk" /> + <property name="out.unsigned.package" + location="${out.absolute.dir}/${ant.project.name}-unsigned.apk" /> + <property name="out.unaligned.package" + location="${out.absolute.dir}/${ant.project.name}-unaligned.apk" /> + <property name="out.release.package" + location="${out.absolute.dir}/${ant.project.name}-release.apk" /> + + <!-- Verbosity --> + <property name="verbose" value="false" /> + <!-- This is needed by emma as it uses multilevel verbosity instead of simple 'true' or 'false' + The property 'verbosity' is not user configurable and depends exclusively on 'verbose' + value.--> + <condition property="verbosity" value="verbose" else="quiet"> + <istrue value="${verbose}" /> + </condition> + <!-- This is needed to switch verbosity of zipalign and aapt. Depends exclusively on 'verbose' + --> + <condition property="v.option" value="-v" else=""> + <istrue value="${verbose}" /> + </condition> + <!-- This is needed to switch verbosity of dx. Depends exclusively on 'verbose' --> + <condition property="verbose.option" value="--verbose" else=""> + <istrue value="${verbose}" /> + </condition> <!-- Tools --> - <condition property="exe" value=".exe" else=""><os family="windows"/></condition> - <property name="adb" value="${android-tools}/adb${exe}"/> - - <!-- rules --> - - <!-- Create the output directories if they don't exist yet. --> - <target name="dirs"> + <condition property="exe" value=".exe" else=""><os family="windows" /></condition> + <property name="adb" location="${android.tools.dir}/adb${exe}" /> + <property name="zipalign" location="${android.tools.dir}/zipalign${exe}" /> + + <!-- 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 --> + + <!-- Macros --> + + <!-- Configurable macro, which allows to pass as parameters output directory, + output dex filename and external libraries to dex (optional) --> + <macrodef name="dex-helper"> + <element name="external-libs" optional="yes" /> + <element name="extra-parameters" optional="yes" /> + <sequential> + <echo>Converting compiled files and external libraries into ${intermediate.dex.file}... + </echo> + <apply executable="${dx}" failonerror="true" parallel="true"> + <arg value="--dex" /> + <arg value="--output=${intermediate.dex.file}" /> + <extra-parameters /> + <arg line="${verbose.option}" /> + <arg path="${out.classes.absolute.dir}" /> + <fileset dir="${external.libs.absolute.dir}" includes="*.jar" /> + <external-libs /> + </apply> + </sequential> + </macrodef> + + <!-- This is macro that enable passing variable list of external jar files to ApkBuilder + Example of use: + <package-helper> + <extra-jars> + <jarfolder path="my_jars" /> + <jarfile path="foo/bar.jar" /> + <jarfolder path="your_jars" /> + </extra-jars> + </package-helper> --> + <macrodef name="package-helper"> + <attribute name="sign.package" /> + <element name="extra-jars" optional="yes" /> + <sequential> + <apkbuilder + outfolder="${out.absolute.dir}" + basename="${ant.project.name}" + signed="@{sign.package}" + verbose="${verbose}"> + <file path="${intermediate.dex.file}" /> + <sourcefolder path="${source.absolute.dir}" /> + <nativefolder path="${native.libs.absolute.dir}" /> + <jarfolder path="${external.libs.absolute.dir}" /> + <extra-jars/> + </apkbuilder> + </sequential> + </macrodef> + + <!-- This is macro which zipaligns in.package and outputs it to out.package. Used by targets + debug, -debug-with-emma and release.--> + <macrodef name="zipalign-helper"> + <attribute name="in.package" /> + <attribute name="out.package" /> + <sequential> + <echo>Running zip align on final apk...</echo> + <exec executable="${zipalign}" failonerror="true"> + <arg line="${v.option}" /> + <arg value="-f" /> + <arg value="4" /> + <arg path="@{in.package}" /> + <arg path="@{out.package}" /> + </exec> + </sequential> + </macrodef> + + <!-- This is macro used only for sharing code among two targets, -install and + -install-with-emma which do exactly the same but differ in dependencies --> + <macrodef name="install-helper"> + <sequential> + <echo>Installing ${out.debug.package} onto default emulator or device...</echo> + <exec executable="${adb}" failonerror="true"> + <arg line="${adb.device.arg}" /> + <arg value="install" /> + <arg value="-r" /> + <arg path="${out.debug.package}" /> + </exec> + </sequential> + </macrodef> + + <!-- Rules --> + + <!-- Creates the output directories if they don't exist yet. --> + <target name="-dirs"> <echo>Creating output directories if needed...</echo> - <mkdir dir="${resource-folder}" /> - <mkdir dir="${external-libs-folder}" /> - <mkdir dir="${gen-folder}" /> - <mkdir dir="${out-folder}" /> - <mkdir dir="${out-classes}" /> + <mkdir dir="${resource.absolute.dir}" /> + <mkdir dir="${external.libs.absolute.dir}" /> + <mkdir dir="${gen.absolute.dir}" /> + <mkdir dir="${out.absolute.dir}" /> + <mkdir dir="${out.classes.absolute.dir}" /> </target> - <!-- Generate the R.java file for this project's resources. --> - <target name="resource-src" depends="dirs, update-version"> + <!-- Generates the R.java file for this project's resources. --> + <target name="-resource-src" depends="-dirs, update-version"> <echo>Generating R.java / Manifest.java from the resources...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> + <arg line="${v.option}" /> <arg value="-m" /> <arg value="-J" /> - <arg path="${gen-folder}" /> + <arg path="${gen.absolute.dir}" /> <arg value="-M" /> <arg path="AndroidManifest.xml" /> <arg value="-S" /> - <arg path="${resource-folder}" /> + <arg path="${resource.absolute.dir}" /> <arg value="-I" /> - <arg path="${android-jar}" /> + <arg path="${android.jar}" /> </exec> </target> - <!-- Generate java classes from .aidl files. --> - <target name="aidl" depends="dirs"> + <!-- Generates java classes from .aidl files. --> + <target name="-aidl" depends="-dirs"> <echo>Compiling aidl files into Java classes...</echo> <apply executable="${aidl}" failonerror="true"> - <arg value="-p${android-aidl}" /> - <arg value="-I${source-folder}" /> - <arg value="-o${gen-folder}" /> - <fileset dir="${source-folder}"> - <include name="**/*.aidl"/> + <arg value="-p${android.aidl}" /> + <arg value="-I${source.absolute.dir}" /> + <arg value="-o${gen.absolute.dir}" /> + <fileset dir="${source.absolute.dir}"> + <include name="**/*.aidl" /> </fileset> </apply> </target> - <!-- Compile this project's .java files into .class files. --> - <target name="compile" depends="resource-src, aidl"> + <!-- Compiles this project's .java files into .class files. --> + <target name="compile" depends="-resource-src, -aidl" + description="Compiles project's .java files into .class files"> + <!-- If android rules are used for a test project, its classpath should include + tested project's location --> + <condition property="extensible.classpath" + value="${tested.project.absolute.dir}/bin/classes" else="."> + <isset property="tested.project.absolute.dir" /> + </condition> <javac encoding="utf8" target="1.5" debug="true" extdirs="" - destdir="${out-classes}" - bootclasspathref="android.target.classpath"> - <src path="${source-folder}" /> - <src path="${gen-folder}" /> + destdir="${out.classes.absolute.dir}" + bootclasspathref="android.target.classpath" + verbose="${verbose}" classpath="${extensible.classpath}"> + <src path="${source.absolute.dir}" /> + <src path="${gen.absolute.dir}" /> <classpath> - <fileset dir="${external-libs-folder}" includes="*.jar"/> - <pathelement path="${main-out-classes}"/> + <fileset dir="${external.libs.dir}" includes="*.jar"/> </classpath> </javac> </target> @@ -181,13 +312,13 @@ <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard.jar" /> <proguard> - -injars ${out-classes} - -outjars ${out-folder}/classes.min.jar - -libraryjars ${android-jar} + -injars ${out.classes.dir} + -outjars ${out.dir}/classes.min.jar + -libraryjars ${android.jar} -dontskipnonpubliclibraryclasses -dontobfuscate - -dontoptimize - -printusage ${out-folder}/proguard.usage + -dontoptimize + -printusage ${out.dir}/proguard.usage -keep public class * extends android.app.Activity -keep public class * extends android.app.Service @@ -199,118 +330,205 @@ <!-- Convert this project's .class files into .dex files. --> <target name="dex.proguard" depends="proguard.execute" if="have.proguard"> - <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo> + <echo>Converting compiled files and external libraries into ${out.dir}/${dex.file.name}...</echo> <apply executable="${dx}" failonerror="true" parallel="true"> <arg value="--dex" /> - <arg value="--output=${intermediate-dex-location}" /> - <fileset dir="${out-folder}" includes="*.min.jar" /> - <fileset dir="${external-libs-folder}" includes="*.jar"/> + <arg value="--output=${intermediate.dex.file}" /> + <fileset dir="${out.classes.absolute.dir}" includes="*.min.jar" /> + <fileset dir="${external.libs.absolute.dir}" includes="*.jar"/> </apply> </target> <!-- Convert this project's .class files into .dex files. --> <target name="dex.vanilla" depends="compile" unless="have.proguard"> - <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo> + <echo>Converting compiled files and external libraries into ${out.dir}/${dex.file.name}...</echo> <apply executable="${dx}" failonerror="true" parallel="true"> <arg value="--dex" /> - <arg value="--output=${intermediate-dex-location}" /> - <arg path="${out-classes-location}" /> - <fileset dir="${external-libs-folder}" includes="*.jar"/> + <arg value="--output=${intermediate.dex.file}" /> + <arg path="${out.classes.absolute.dir}" /> + <fileset dir="${external.libs.absolute.dir}" includes="*.jar"/> </apply> </target> - <target name="dex" depends="dex.vanilla, dex.proguard" /> + <target name="-dex" depends="dex.vanilla, dex.proguard" /> <!-- Put the project's resources into the output package file This actually can create multiple resource package in case Some custom apk with specific configuration have been declared in default.properties. --> - <target name="package-resources"> + <target name="-package-resources"> <echo>Packaging resources</echo> <aaptexec executable="${aapt}" command="package" manifest="AndroidManifest.xml" - resources="${resource-folder}" - assets="${asset-folder}" - androidjar="${android-jar}" - outfolder="${out-folder}" + resources="${resource.absolute.dir}" + assets="${asset.absolute.dir}" + androidjar="${android.jar}" + outfolder="${out.absolute.dir}" basename="${ant.project.name}" /> </target> - <!-- 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"> - <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> + <!-- Packages the application and sign it with a debug key. --> + <target name="-package-debug-sign" depends="-dex, -package-resources"> + <package-helper sign.package="true" /> </target> - <!-- Package the application without signing it. - This allows for the application to be signed later with an official publishing key. --> - <target name="release" depends="dex, 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> + <!-- Packages the application without signing it. --> + <target name="-package-no-sign" depends="-dex, -package-resources"> + <package-helper sign.package="false" /> </target> - <!-- Install 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 name="-compile-tested-if-test" if="tested.project.dir" unless="do.not.compile.again"> + <subant target="compile"> + <fileset dir="${tested.project.absolute.dir}" includes="build.xml" /> + </subant> </target> - <target name="reinstall" depends="debug"> - <echo>Installing ${out-debug-package} onto default emulator...</echo> - <exec executable="${adb}" failonerror="true"> - <arg value="install" /> - <arg value="-r" /> - <arg path="${out-debug-package}" /> - </exec> + <!-- Builds debug output package, provided all the necessary files are already dexed --> + <target name="debug" depends="-compile-tested-if-test, -package-debug-sign" + description="Builds the application and signs it with a debug key."> + <zipalign-helper in.package="${out.debug.unaligned.package}" + out.package="${out.debug.package}" /> + <echo>Debug Package: ${out.debug.package}</echo> </target> - <!-- Uinstall the package from the default emulator --> - <target name="uninstall"> - <echo>Uninstalling ${application-package} from the default emulator...</echo> + <target name="-release-check"> + <condition property="release.sign"> + <and> + <isset property="key.store" /> + <isset property="key.alias" /> + </and> + </condition> + </target> + + <target name="-release-nosign" depends="-release-check" unless="release.sign"> + <echo>No key.store and key.alias properties found in build.properties.</echo> + <echo>Please sign ${out.unsigned.package} manually</echo> + <echo>and run zipalign from the Android SDK tools.</echo> + </target> + + <target name="release" depends="-package-no-sign, -release-nosign" if="release.sign" + description="Builds the application. The generated apk file must be signed before + it is published."> + <!-- Gets passwords --> + <input + message="Please enter keystore password (store:${key.store}):" + addproperty="key.store.password" /> + <input + message="Please enter password for alias '${key.alias}':" + addproperty="key.alias.password" /> + + <!-- Signs the APK --> + <echo>Signing final apk...</echo> + <signjar + jar="${out.unsigned.package}" + signedjar="${out.unaligned.package}" + keystore="${key.store}" + storepass="${key.store.password}" + alias="${key.alias}" + keypass="${key.alias.password}" + verbose="${verbose}" /> + + <!-- Zip aligns the APK --> + <zipalign-helper in.package="${out.unaligned.package}" + out.package="${out.release.package}" /> + <echo>Release Package: ${out.release.package}</echo> + </target> + + <target name="install" depends="debug" + description="Installs/reinstalls the debug package onto a running + emulator or device. If the application was previously installed, + the signatures must match." > + <install-helper /> + </target> + + <target name="-uninstall-check"> + <condition property="uninstall.run"> + <isset property="manifest.package" /> + </condition> + </target> + <target name="-uninstall-error" depends="-uninstall-check" unless="uninstall.run"> + <echo>Unable to run 'ant uninstall', manifest.package property is not defined. + </echo> + </target> + + <!-- Uninstalls the package from the default emulator/device --> + <target name="uninstall" depends="-uninstall-error" if="uninstall.run" + description="Uninstalls the application from a running emulator or device."> + <echo>Uninstalling ${manifest.package} from the default emulator or device...</echo> <exec executable="${adb}" failonerror="true"> + <arg line="${adb.device.arg}" /> <arg value="uninstall" /> - <arg path="${application-package}" /> + <arg value="${manifest.package}" /> </exec> </target> + <!-- Targets for code-coverage measurement purposes, invoked from external file --> + + <!-- Emma-instruments tested project classes (compiles the tested project if necessary) + and writes instrumented classes to ${instrumentation.absolute.dir}/classes --> + <target name="-emma-instrument" depends="compile"> + <echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo> + <!-- It only instruments class files, not any external libs --> + <emma enabled="true"> + <instr verbosity="${verbosity}" + mode="overwrite" + instrpath="${out.absolute.dir}/classes" + outdir="${out.absolute.dir}/classes"> + </instr> + <!-- TODO: exclusion filters on R*.class and allowing custom exclusion from + user defined file --> + </emma> + </target> + + <target name="-dex-instrumented" depends="-emma-instrument"> + <dex-helper> + <extra-parameters> + <arg value="--no-locals" /> + </extra-parameters> + <external-libs> + <fileset file="${emma.dir}/emma_device.jar" /> + </external-libs> + </dex-helper> + </target> + + <!-- Invoked from external files for code coverage purposes --> + <target name="-package-with-emma" depends="-dex-instrumented, -package-resources"> + <package-helper sign.package="true"> + <extra-jars> + <!-- Injected from external file --> + <jarfile path="${emma.dir}/emma_device.jar" /> + </extra-jars> + </package-helper> + </target> + + <target name="-debug-with-emma" depends="-package-with-emma"> + <zipalign-helper in.package="${out.debug.unaligned.package}" + out.package="${out.debug.package}" /> + </target> + + <target name="-install-with-emma" depends="-debug-with-emma"> + <install-helper /> + </target> + + <!-- End of targets for code-coverage measurement purposes --> + <target name="help"> <!-- displays starts at col 13 |13 80| --> <echo>Android Ant Build. Available targets:</echo> <echo> help: Displays this help.</echo> - <echo> debug: Builds the application and sign it with a debug key.</echo> + <echo> clean: Removes output files created by other targets.</echo> + <echo> compile: Compiles project's .java files into .class files.</echo> + <echo> debug: Builds the application and signs it with a debug key.</echo> <echo> release: Builds the application. The generated apk file must be</echo> <echo> signed before it is published.</echo> - <echo> install: Installs the debug package onto a running emulator or</echo> - <echo> device. This can only be used if the application has </echo> - <echo> not yet been installed.</echo> - <echo> reinstall: Installs the debug package on a running emulator or</echo> - <echo> device that already has the application.</echo> - <echo> The signatures must match.</echo> - <echo> uninstall: uninstall the application from a running emulator or</echo> + <echo> install: Installs/reinstalls the debug package onto a running</echo> + <echo> emulator or device.</echo> + <echo> If the application was previously installed, the</echo> + <echo> signatures must match.</echo> + <echo> uninstall: Uninstalls the application from a running emulator or</echo> <echo> device.</echo> <echo> proguard: use before build statements like "debug" and "release"</echo> <echo> to enable proguard dead code removal. NOTE: You must</echo> @@ -325,7 +543,8 @@ </tstamp> <!-- Get the version name from the android manifest, will en up in property ${manifest.android:versionName} --> - <xmlproperty file="${basedir}/AndroidManifest.xml" collapseAttributes="true"/> + <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" + output="manifest.version.name" /> <!-- find out svn.revision of HEAD, need svn.exe installed on local machine will en up in property ${Revision} --> <exec executable="svn" output="svnlog.out"> @@ -342,16 +561,16 @@ <delete file="svnlog.out"/> - <replaceregexp file="${resource-folder}/values/notrans.xml" encoding="utf8" match='(\x3Cstring name="msg_version">)[^\x3C]*(\x3C/string>)' - replace='\1${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})\2' /> + <replaceregexp file="${resource.absolute.dir}/values/notrans.xml" encoding="utf8" match='(\x3Cstring name="msg_version">)[^\x3C]*(\x3C/string>)' + replace='\1${ant.project.name} ${manifest.version.name} (r${Revision} ${build.date})\2' /> - <echo>Updated "msg_version" to: ${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})</echo> + <echo>Updated "msg_version" to: ${ant.project.name} ${manifest.version.name} (r${Revision} ${build.date})</echo> </target> <target name="clean" description="Clean up the result of the build process"> - <delete dir="${out-folder}"/> - <delete dir="${gen-folder}"/> + <delete dir="${out.absolute.dir}"/> + <delete dir="${gen.absolute.dir}"/> <exec executable="ant" failonerror="true"> <arg value="-f" /> <arg value="tests/build.xml" /> @@ -359,12 +578,12 @@ </exec> </target> - <target name="tests" depends="reinstall"> + <target name="tests" depends="install"> <echo>Building and installing tests...</echo> <exec executable="ant" failonerror="true"> <arg value="-f" /> <arg value="tests/build.xml" /> - <arg value="reinstall"/> + <arg value="install"/> </exec> <echo>Running test cases...</echo> <exec executable="${adb}"> |