Search code examples
androidantandroid-libraryandroid-build

Android library project custom Ant build


I have a library project that serves as the backend for a number of other projects. It does the web connection and parsing etc. Then I have other front end projects that build on this. For development and server environments I wrote an ANT build script that replaces certain values in the code bases on the build type. So I have two targets buildDev and buildProd.

Is there a way for me to have the values set correctly while building the dependent (non-library projects). E.g. if I do ant debug on the project it builds the backend with ant buildDev and if I do ant release it does it with ant buildProd.

I'm pretty sure that's not possible, so what are the alternatives.

For the curious, the custom builds just replaces a file that has static variables that are assigned different values based on the type of build. Nothing too complex.


Solution

  • I found the solution. The default Android Ant build.xml passes the release name to the child library project script while calling it. The following lines and the code that follows details it.

    <!-- figure out which target must be used to build the library projects.
    If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
    <condition property="project.libraries.target" value="instrument" else="${build.target}">
        <istrue value="${build.is.instrumented}" />
    </condition>
    

    Then it's just a matter of having the same targets in all the interdependent projects.