diff options
Diffstat (limited to 'scripts/android_rules.xml')
-rw-r--r-- | scripts/android_rules.xml | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/scripts/android_rules.xml b/scripts/android_rules.xml new file mode 100644 index 0000000..799aa0b --- /dev/null +++ b/scripts/android_rules.xml @@ -0,0 +1,225 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="android_rules" default="debug"> + + <!-- + This rules file is meant to be imported by the custom Ant task: + com.android.ant.AndroidInitTask + + The following properties are put in place by the importing task: + android-jar, android-aidl, aapt, aidl, and dx + + Additionnaly, the task sets up the following classpath reference: + android.target.classpath + This is used by the compiler task as the boot classpath. + --> + + <!-- 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="source-folder" value="src" /> + <property name="resource-folder" value="res" /> + <property name="asset-folder" value="assets" /> + <property name="source-location" value="${basedir}/${source-folder}" /> + + <!-- folder for the 3rd party java libraries --> + <property name="external-libs-folder" value="libs" /> + + <!-- folder for the native libraries --> + <property name="native-libs-folder" value="libs" /> + + <!-- Output directories --> + <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"/> + + <!-- Create R.java in the source directory --> + <property name="r-folder" value="${source-folder}" /> + + <!-- 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> + + <!-- The final package file to generate --> + <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/> + + <!-- 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"> + <echo>Creating output directories if needed...</echo> + <mkdir dir="${out-folder}" /> + <mkdir dir="${out-classes}" /> + </target> + + <!-- Generate the R.java file for this project's resources. --> + <target name="resource-src" depends="dirs"> + <echo>Generating R.java / Manifest.java from the resources...</echo> + <exec executable="${aapt}" failonerror="true"> + <arg value="package" /> + <arg value="-m" /> + <arg value="-J" /> + <arg path="${r-folder}" /> + <arg value="-M" /> + <arg path="AndroidManifest.xml" /> + <arg value="-S" /> + <arg path="${resource-folder}" /> + <arg value="-I" /> + <arg path="${android-jar}" /> + </exec> + </target> + + <!-- Generate 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}" /> + <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"> + <javac encoding="ascii" target="1.5" debug="true" extdirs="" + srcdir="${source-folder}" + destdir="${out-classes}" + bootclasspathref="android.target.classpath"> + <classpath> + <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 ${out-folder}/${dex-file}...</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"/> + </apply> + </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-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-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 --> + <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> + + <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> + </target> + + <!-- Uinstall the package from the default emulator --> + <target name="uninstall"> + <echo>Uninstalling ${application-package} from the default emulator...</echo> + <exec executable="${adb}" failonerror="true"> + <arg value="uninstall" /> + <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> +</project> |