Reputation: 2667
These 4 files (build.xml, local.properties, projects.properties, proguard.cfg) are auto-generated when running:
android update project --name TestApp --target 10 -p .
Updated project.properties
Updated local.properties
Added file ./build.xml
Updated file ./proguard.cfg
But I want the "auto-gen" build.xml to also include the following "pre-compile" code as well, is there a way to do that? Is there some "include" file or "template" file which can include that?
<target name="config">
<property name="config-target-path" value="${source.dir}/com/androidengineer/antbuild"/>
<!-- Copy the configuration file, replacing tokens in the file. -->
<copy file="config/Config.java" todir="${config-target-path}"
overwrite="true" encoding="utf-8">
<filterset>
<filter token="CONFIG.LOGGING" value="${config.logging}"/>
</filterset>
</copy>
</target>
Upvotes: 10
Views: 16662
Reputation: 29866
The build.xml
as generated by the android
tool (at least when using Android SDK r20) contains this piece of code:
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
So what I do to create additional targets or customize existing targets is to create a custom_rules.xml
file with these new targets. Note that in my tests the targets needed to be nested in a <project>
tag, so simply copy the first two lines of your generated build.xml
to custom_rules.xml
, and don't forget about the closing </project>
tag in the end. As custom_rules.xml
will not be overwritten by android update
your changes will be persistent and can be checked into your SCM tool of choice.
Upvotes: 13
Reputation: 60711
In build.xml
itself, it tells you how to do this. See the following comment from the file:
<!--
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
Upvotes: 1
Reputation: 2739
Maybe you can check the answer to this question:
Does the ADT plugin automatically create an ant build file?
in the answer there is a paragraph saying...
Alternatively, you can just copy the build.xml template directly from $ANDROID_HOME/tools/lib/build.template then just change the project name.
Modify this file and run the commands to see if it works.
Update
Also check "Customizing the build" of this article: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html
Upvotes: 3