diff options
author | Kenny Root <kenny@the-b.org> | 2009-05-05 18:02:17 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-05-05 18:02:17 +0000 |
commit | dd2564469d1955837ec11c0ce0fd463bde1b6756 (patch) | |
tree | 1913d140231875b7b1bc51c031dc1972cea9e57d | |
parent | b8e169d76988e0f31076443015b101726cbaed62 (diff) | |
download | connectbot-dd2564469d1955837ec11c0ce0fd463bde1b6756.tar.gz connectbot-dd2564469d1955837ec11c0ce0fd463bde1b6756.tar.bz2 connectbot-dd2564469d1955837ec11c0ce0fd463bde1b6756.zip |
Update Ant build system for SDK 1.5
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@215 df292f66-193f-0410-a5fc-6d59da041ff2
-rw-r--r-- | build.properties | 15 | ||||
-rw-r--r-- | build.xml | 415 | ||||
-rw-r--r-- | default.properties | 11 |
3 files changed, 235 insertions, 206 deletions
diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..e5d39ba --- /dev/null +++ b/build.properties @@ -0,0 +1,15 @@ +# This file is used to override default values used by the Ant build system. +# +# This file must be checked in Version Control Systems, as it is +# integral to the build system of your project. + +# The name of your application package as defined in the manifest. +# Used by the 'uninstall' rule. +application-package=org.connectbot + +# The name of the source folder. +source-folder=src + +# The name of the output folder. +out-folder=bin + @@ -1,109 +1,128 @@ -<?xml version="1.0" ?> -<project name="ConnectBot" default="debug"> - <!-- SDK Locations --> - <property name="sdk-folder" value="/usr/local/android" /> - <property name="android-tools" value="/usr/local/android/tools" /> - - <!-- Application Package Name --> - <property name="application-package" value="org.connectbot" /> +<?xml version="1.0" encoding="UTF-8"?> +<project name="ConnectBot" default="help"> - <!-- The intermediates directory --> - <!-- Eclipse uses "bin" for its own output, so we do the same. --> - <property name="outdir" value="bin" /> + <!-- The local.properties file is created and updated by the 'android' tool. + It contain the path to the SDK. It should *NOT* be checked in in Version + Control Systems. --> + <property file="local.properties"/> - <property name="lib.dir" value="${basedir}/lib" /> - <property name="encoding" value="UTF-8" /> - - <!-- ************************************************************************************* --> - <!-- No user servicable parts below. --> + <!-- 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 + used by the Ant rules. + Here are some properties you may want to change/update: + + application-package + the name of your application package as defined in the manifest. Used by the + 'uninstall' rule. + source-folder + the name of the source folder. Default is 'src'. + out-folder + the name of the output folder. Default is 'bin'. + + Properties related to the SDK location or the project target should be updated + using the 'android' tool with the 'update' action. + + This file is an integral part of the build system for your application and + should be checked in in Version Control Systems. + + --> + <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 + should be checked in in Version Control Systems. --> + <property file="default.properties"/> + + <!-- 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" /> + </path> + + <taskdef name="setup" + classname="com.android.ant.SetupTask" + classpathref="android.antlibs"/> - <property name="android-framework" value="${android-tools}/lib/framework.aidl" /> + <!-- Execute the Android Setup task that will setup some properties specific to the target, + and import the rules files. + To customize the rules, copy/paste them below the task, and disable import by setting + the import attribute to false: + <setup import="false" /> + + This will ensure that the properties are setup correctly but that your customized + targets are used. + --> + <setup import="false" /> + + <!-- Custom tasks --> + <taskdef name="aaptexec" + classname="com.android.ant.AaptExecLoopTask" + classpathref="android.antlibs"/> + + <taskdef name="apkbuilder" + classname="com.android.ant.ApkBuilderTask" + classpathref="android.antlibs"/> + + <!-- Properties --> + + <property name="android-tools" value="${sdk-location}/tools" /> <!-- Input directories --> - <property name="resource-dir" value="res" /> - <property name="asset-dir" value="assets" /> - <property name="srcdir" value="src" /> - <condition property="srcdir-ospath" - value="${basedir}\${srcdir}" - else="${basedir}/${srcdir}" > - <os family="windows"/> - </condition> + <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}" /> - <property name="external-libs" value="libs" /> - <condition property="external-libs-ospath" - value="${basedir}\${external-libs}" - else="${basedir}/${external-libs}" > - <os family="windows"/> - </condition> + <!-- folder for the 3rd party java libraries --> + <property name="external-libs-folder" value="libs" /> - <!-- Output directories --> - <property name="outdir-classes" value="${outdir}/classes" /> - <condition property="outdir-classes-ospath" - value="${basedir}\${outdir-classes}" - else="${basedir}/${outdir-classes}" > - <os family="windows"/> - </condition> + <!-- folder for the native libraries --> + <property name="native-libs-folder" value="libs" /> - <!-- Create R.java in the source directory --> - <property name="outdir-r" value="src" /> + <!-- 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"/> <!-- Intermediate files --> <property name="dex-file" value="classes.dex" /> - <property name="intermediate-dex" value="${outdir}/${dex-file}" /> - <condition property="intermediate-dex-ospath" + <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> <!-- The final package file to generate --> - <property name="resources-package" value="${outdir}/${ant.project.name}.ap_" /> - <condition property="resources-package-ospath" - value="${basedir}\${resources-package}" - else="${basedir}/${resources-package}" > - <os family="windows"/> - </condition> - - <property name="out-debug-package" value="${outdir}/${ant.project.name}-debug.apk" /> - <condition property="out-debug-package-ospath" - value="${basedir}\${out-debug-package}" - else="${basedir}/${out-debug-package}" > - <os family="windows"/> - </condition> - - <property name="out-unsigned-package" value="${outdir}/${ant.project.name}-unsigned.apk" /> - <condition property="out-unsigned-package-ospath" - value="${basedir}\${out-unsigned-package}" - else="${basedir}/${out-unsigned-package}" > - <os family="windows"/> - </condition> + <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/> <!-- Tools --> - <condition property="aapt" value="${android-tools}/aapt.exe" else="${android-tools}/aapt" > - <os family="windows"/> - </condition> - <condition property="aidl" value="${android-tools}/aidl.exe" else="${android-tools}/aidl" > - <os family="windows"/> - </condition> - <condition property="adb" value="${android-tools}/adb.exe" else="${android-tools}/adb" > - <os family="windows"/> - </condition> - <condition property="dx" value="${android-tools}/dx.bat" else="${android-tools}/dx" > - <os family="windows"/> - </condition> - <condition property="apk-builder" value="${android-tools}/apkbuilder.bat" else="${android-tools}/apkbuilder" > - <os family="windows"/> - </condition> + <condition property="exe" value=".exe" else=""><os family="windows"/></condition> + <property name="adb" value="${android-tools}/adb${exe}"/> - <property name="android-jar" value="${sdk-folder}/android.jar" /> - - <!-- Rules --> + <!-- rules --> <!-- Create the output directories if they don't exist yet. --> <target name="dirs"> <echo>Creating output directories if needed...</echo> - <mkdir dir="${outdir}" /> - <mkdir dir="${outdir-classes}" /> + <mkdir dir="${resource-folder}" /> + <mkdir dir="${external-libs-folder}" /> + <mkdir dir="${gen-folder}" /> + <mkdir dir="${out-folder}" /> + <mkdir dir="${out-classes}" /> </target> <!-- Generate the R.java file for this project's resources. --> @@ -113,13 +132,13 @@ <arg value="package" /> <arg value="-m" /> <arg value="-J" /> - <arg value="${outdir-r}" /> + <arg path="${gen-folder}" /> <arg value="-M" /> - <arg value="AndroidManifest.xml" /> + <arg path="AndroidManifest.xml" /> <arg value="-S" /> - <arg value="${resource-dir}" /> + <arg path="${resource-folder}" /> <arg value="-I" /> - <arg value="${android-jar}" /> + <arg path="${android-jar}" /> </exec> </target> @@ -127,119 +146,86 @@ <target name="aidl" depends="dirs"> <echo>Compiling aidl files into Java classes...</echo> <apply executable="${aidl}" failonerror="true"> - <arg value="-p${android-framework}" /> - <arg value="-I${srcdir}" /> - <fileset dir="${srcdir}"> + <arg value="-p${android-aidl}" /> + <arg value="-I${source-folder}" /> + <arg value="-o${gen-folder}" /> + <fileset dir="${source-folder}"> <include name="**/*.aidl"/> </fileset> </apply> </target> <!-- Compile this project's .java files into .class files. --> - <target name="compile" depends="dirs, resource-src, aidl"> + <target name="compile" depends="resource-src, aidl"> <javac encoding="ascii" target="1.5" debug="true" extdirs="" - srcdir="." - destdir="${outdir-classes}" - bootclasspath="${android-jar}"> + destdir="${out-classes}" + bootclasspathref="android.target.classpath"> + <src path="${source-folder}" /> + <src path="${gen-folder}" /> <classpath> - <fileset dir="${external-libs}" includes="*.jar"/> + <fileset dir="${external-libs-folder}" includes="*.jar"/> + <pathelement path="${main-out-classes}"/> </classpath> </javac> </target> <!-- Convert this project's .class files into .dex files. --> <target name="dex" depends="compile"> - <echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo> + <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo> <apply executable="${dx}" failonerror="true" parallel="true"> <arg value="--dex" /> - <arg value="--output=${intermediate-dex-ospath}" /> - <arg path="${outdir-classes-ospath}" /> - <fileset dir="${external-libs}" includes="*.jar"/> + <arg value="--output=${intermediate-dex-location}" /> + <arg path="${out-classes-location}" /> + <fileset dir="${external-libs-folder}" includes="*.jar"/> </apply> </target> - <!-- Put the project's resources into the output package file. --> - <target name="package-res-and-assets"> - <echo>Packaging resources and assets...</echo> - <exec executable="${aapt}" failonerror="true"> - <arg value="package" /> - <arg value="-f" /> - <arg value="-M" /> - <arg value="AndroidManifest.xml" /> - <arg value="-S" /> - <arg value="${resource-dir}" /> - <arg value="-A" /> - <arg value="${asset-dir}" /> - <arg value="-I" /> - <arg value="${android-jar}" /> - <arg value="-F" /> - <arg value="${resources-package}" /> - </exec> - </target> - - <!-- Same as package-res-and-assets, but without "-A ${asset-dir}" --> - <target name="package-res-no-assets"> - <echo>Packaging resources...</echo> - <exec executable="${aapt}" failonerror="true"> - <arg value="package" /> - <arg value="-f" /> - <arg value="-M" /> - <arg value="AndroidManifest.xml" /> - <arg value="-S" /> - <arg value="${resource-dir}" /> - <!-- No assets directory --> - <arg value="-I" /> - <arg value="${android-jar}" /> - <arg value="-F" /> - <arg value="${resources-package}" /> - </exec> - </target> - - <!-- Invoke the proper target depending on whether or not - an assets directory is present. --> - <!-- TODO: find a nicer way to include the "-A ${asset-dir}" argument - only when the assets dir exists. --> - <target name="package-res"> - <available file="${asset-dir}" type="dir" - property="res-target" value="and-assets" /> - <property name="res-target" value="no-assets" /> - <antcall target="package-res-${res-target}" /> + <!-- 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"> + <echo>Packaging resources</echo> + <aaptexec executable="${aapt}" + command="package" + manifest="AndroidManifest.xml" + resources="${resource-folder}" + assets="${asset-folder}" + androidjar="${android-jar}" + outfolder="${out-folder}" + 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-res"> - <echo>Packaging ${out-debug-package}, and signing it with a debug key...</echo> - <exec executable="${apk-builder}" failonerror="true"> - <arg value="${out-debug-package-ospath}" /> - <arg value="-z" /> - <arg value="${resources-package-ospath}" /> - <arg value="-f" /> - <arg value="${intermediate-dex-ospath}" /> - <arg value="-rf" /> - <arg value="${srcdir-ospath}" /> - <arg value="-rj" /> - <arg value="${external-libs-ospath}" /> - </exec> + 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> </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-res"> - <echo>Packaging ${out-unsigned-package} for release...</echo> - <exec executable="${apk-builder}" failonerror="true"> - <arg value="${out-unsigned-package-ospath}" /> - <arg value="-u" /> - <arg value="-z" /> - <arg value="${resources-package-ospath}" /> - <arg value="-f" /> - <arg value="${intermediate-dex-ospath}" /> - <arg value="-rf" /> - <arg value="${srcdir-ospath}" /> - <arg value="-rj" /> - <arg value="${external-libs-ospath}" /> - </exec> - <echo>It will need to be signed with jarsigner before being published.</echo> + 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> </target> <!-- Install the package on the default emulator --> @@ -247,7 +233,7 @@ <echo>Installing ${out-debug-package} onto default emulator...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> - <arg value="${out-debug-package}" /> + <arg path="${out-debug-package}" /> </exec> </target> @@ -256,7 +242,7 @@ <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="-r" /> - <arg value="${out-debug-package}" /> + <arg path="${out-debug-package}" /> </exec> </target> @@ -265,39 +251,56 @@ <echo>Uninstalling ${application-package} from the default emulator...</echo> <exec executable="${adb}" failonerror="true"> <arg value="uninstall" /> - <arg value="${application-package}" /> + <arg path="${application-package}" /> </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> debug: Builds the application and sign 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> device.</echo> + </target> <target name="update-version" description="Updates the Version.java file with current SVN revision"> - <echo>Updating strings.xml with SVN revision and build date...</echo> - <property name="revision" value="HEAD"/> - <tstamp> - <format property="build.date" pattern="yyyy.MM.dd" /> - </tstamp> - - <!-- Get the version name from the android manifest, will en up in property ${manifest.android:versionName} --> - <xmlproperty file="${basedir}/AndroidManifest.xml" collapseAttributes="true"/> - - <!-- 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"> - <arg line="info -r ${revision}"/> - </exec> - - <loadproperties srcFile="svnlog.out"> - <filterchain> - <linecontains> - <contains value="Revision"/> - </linecontains> - </filterchain> - </loadproperties> - - <delete file="svnlog.out"/> - - <replaceregexp file="${resource-dir}/values/strings.xml" encoding="${encoding}" match='(\x3Cstring name="msg_version">)[^\x3C]*(\x3C/string>)' - replace='\1${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})\2' /> - - <echo>Updated "msg_version" to: ${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})</echo> - </target> + <echo>Updating strings.xml with SVN revision and build date...</echo> + <property name="revision" value="HEAD"/> + <tstamp> + <format property="build.date" pattern="yyyy.MM.dd" /> + </tstamp> + + <!-- Get the version name from the android manifest, will en up in property ${manifest.android:versionName} --> + <xmlproperty file="${basedir}/AndroidManifest.xml" collapseAttributes="true"/> + + <!-- 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"> + <arg line="info -r ${revision}"/> + </exec> + <loadproperties srcFile="svnlog.out"> + <filterchain> + <linecontains> + <contains value="Revision"/> + </linecontains> + </filterchain> + </loadproperties> + + <delete file="svnlog.out"/> + + <replaceregexp file="${resource-dir}/values/strings.xml" encoding="${encoding}" match='(\x3Cstring name="msg_version">)[^\x3C]*(\x3C/string>)' + replace='\1${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})\2' /> + + <echo>Updated "msg_version" to: ${ant.project.name} ${manifest.android:versionName} (r${Revision} ${build.date})</echo> + </target> </project> diff --git a/default.properties b/default.properties new file mode 100644 index 0000000..4513a1e --- /dev/null +++ b/default.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "build.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-3 |