2011-12-16 20 views
10

Estos 4 archivos (build.xml, local.properties, projects.properties, proguard.cfg) se auto-genera cuando se ejecuta:Android estructura de encargo usando Ant

proyecto de actualización androide --name TestApp - objetivo 10 p.

project.properties Actualizado

local.properties Actualizado

archivo Agregado ./build.xml

archivo actualizado ./proguard.cfg

pero quiero que el "auto -gen "build.xml para incluir también el siguiente código de" precompilación "también, ¿hay alguna manera de hacerlo? ¿Hay algún archivo de "inclusión" o archivo de "plantilla" que pueda incluir eso?

<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> 
+0

Intenta pegar ese código en tu build.xml y luego modifica el objetivo "compilar" (puede ser otro nombre) como ... – coolcfan

+0

Hola, What Quiero decir es que "build.xml" se genera automáticamente al ejecutar "actualización de Android". No puedo pegar ese código allí. Ese es mi problema y quiero saber si puedo pegar ese código en otro lugar pero todavía puedo ser incluido cuando se ejecuta "actualización de android". – xbeta

+0

¿Se ejecutará build.xml inmediatamente después de generarse? – coolcfan

Respuesta

13

El build.xml como generado por la herramienta android (al menos cuando se utiliza r20 Android SDK) contiene esta pieza de código:

<!-- 
    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" /> 

Así que lo que hago a crear objetivos adicionales o personalizar los objetivos existentes es crear un archivo custom_rules.xml con estos nuevos objetivos. Tenga en cuenta que en mis pruebas los objetivos deben anidarse en una etiqueta <project>, así que simplemente copie las primeras dos líneas de su generado build.xml a custom_rules.xml, y no se olvide de la etiqueta de cierre </project> al final. Como custom_rules.xml no será sobrescrito por android update sus cambios serán persistentes y se pueden verificar en su herramienta SCM de su elección.

+0

Sí, parece que lo arreglaron en la nueva versión del SDK. – xbeta

3

Tal vez se puede comprobar la respuesta a esta pregunta:

Does the ADT plugin automatically create an ant build file?

en la respuesta hay un párrafo que dice ...

Como alternativa, puede simplemente copiar el plantilla build.xml directamente desde $ ANDROID_HOME/tools/lib/build.template luego simplemente cambie el nombre del proyecto.

Modifique este archivo y ejecute los comandos para ver si funciona.

actualización

marque también "Personalización de la acumulación" de este artículo: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

+0

Gracias! Pero esto no funciona, ya que siempre ejecuto "android update project" en cada momento que se crea, lo que siempre generaba un nuevo "build.xml" y reemplazaba el existente. Estoy buscando una solución para eso. – xbeta

+0

Entonces no sé por qué no funciona. Dado que hay una plantilla build.xml, creo que debería generar un nuevo build.xml a partir de la plantilla cada vez que ejecuta "proyecto de actualización de android", pero parece que no lo es ... Lo siento por eso. – coolcfan

+0

Hola, coolcfan, gracias por tu ayuda, pero no creo que entiendas mi problema aquí. Puedo hacer cambios en la plantilla, pero eso afectaría a todos mis "otros" proyectos ya que están usando el mismo SDK. Solo quiero que se modifique a medida para este proyecto en particular para esta compilación en particular. 'Así que aquí está mi situación:' '1. Copie $ ANDROID_HOME/tools/lib/build.template a build.xml' '2. Modifique build.xml' '3. Ejecute "proyecto de actualización android" ' ' 4. "android update" genera un nuevo build.xml que ahora reemplazó mi copia de build.xml' – xbeta

1

En build.xml sí, que le indica cómo hacer esto. Ver el siguiente comentario del archivo:

<!-- 

    *********************** 
    ****** 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 --> 
+0

Lo intenté, y no funcionó :-( Pero podría ser debido a un error que tenía en mi SDK de Android. Lo intentaré de nuevo con la nueva actualización. – xbeta