2012-02-22 40 views
5

Estoy tratando de manejar todo esto del sistema de construcción "Ant". Creé un build.xml que Android me proporciona nativamente usando el comando: android update project -p ..¿Cómo compilar y crear un proyecto de Android usando Ant?

Si bien esto me ha dado una plantilla de archivo build.xml, me gustaría un par de opciones más. Específicamente, me gustaría poder JAR y/o Compilar mi proyecto; preferiblemente con un número de versión.

Pregunta de bonificación: cómo puedo excluir archivos de mi compilación JAR. Por ejemplo, tengo una actividad que he usado para probar mi funcionalidad, pero no quiero que se incluya en el JAR final.

Mi archivo build.xml que Android me ha dado es Gisted here ya que es bastante largo (en su mayoría comentarios).

EDIT: ¡También estoy usando IntelliJ así que no hay detalles de Eclipse, por favor!

+2

¿Qué quiere decir con "JAR y compilar mi proyecto", teniendo en cuenta que las aplicaciones de Android no son archivos JAR? – CommonsWare

+0

@CommonsWare, realmente quiero decir dos "objetivos". 1.Recopila mi código para que las clases y los archivos dex y lo que sea estén en sus directorios correctos. 2. JAR esos archivos de clase que quiero para poder distribuir mi "biblioteca" de Android de manera apropiada. – hwrdprkns

+0

Además, debería aclarar. No sé si mi proyecto califica como proyecto de "biblioteca" o no. Pero solo tengo un código que usa el Android SDK que quiero JARed para poder usarlo en otra aplicación. No actividades, solo otro código. – hwrdprkns

Respuesta

14

Específicamente, me gustaría poder JAR y/o Compilar mi proyecto; preferiblemente con un número de versión.

En Android, los números de versión son para aplicaciones, no para JAR.

Dicho esto, la adición de un objetivo jar es una cuestión de añadir esto a su archivo build.xml hacia la parte inferior:

<target name="jar" depends="debug"> 
    <jar 
     destfile="bin/whatever-you-want-to-call-the.jar" 
     basedir="bin/classes" 
    /> 
</target> 

A continuación, ejecute ant jar para compilar y empaquetar el archivo JAR.

Verá este patrón en la mayoría de los componentes reutilizables de Android en my GitHub area (consulte los repositorios cwac-).

Pregunta de bonificación: cómo puedo excluir archivos de mi compilación de JAR. Por ejemplo, tengo una actividad que he usado para probar mi funcionalidad, pero no quiero que se incluya en el JAR final.

Uso excludes o excludesfile, como se describe en el jar Ant task documentation.

+0

Perfecto. Como un aparte, 'excludes =" **/ExcludedFile.class "' excluye el archivo que no te gusta. Y la depuración 'depends =" '' es la magia que requiere una compilación previa. – hwrdprkns

+0

@hwrdprkns ¿Podría explicar un poco más lo que quiere decir con "la magia que requiere precompilación"? ¿Estás diciendo que especificar "depends = 'debug'" obliga a la hormiga a compilar antes de compilar el jar? EDITAR: en realidad después de leer más, ¿significa esto que cuando llamas "ant jar" te das cuenta de que primero tiene que hacer "depuración de hormigas"? Y supongo que utilizamos la depuración en lugar de la versión porque no nos importa firmar un frasco. –

1

Para la reutilización de proyectos Android y no Android, le sugiero que eche un vistazo al complemento Android Maven. Aprovecha la administración de la dependencia y otras poderosas características de Maven y será mucho más adecuado para lo que desea hacer.

Verifique el webpage and documentation en él y tal vez el capítulo sobre Android development in Maven : The Complete Reference que escribí para obtener un poco más de comprensión, así como tener algo que ver sobre Maven.

El complemento de Android admite la reutilización para artefactos de jar normales y si hay dependencias de Android dentro del código, puede usar proyectos apklib. Muchos proyectos como Roboguice, robolectric, actionbarsherlock y otros usan esta función con éxito.

+0

No es lo que la pregunta solicitó, pero +1 ya que parece una herramienta increíble que debería conocer. – hwrdprkns

+0

No hay problema ... solo intento salvarlo de xml hell y muchos dolores de actualización una vez que comience a personalizar la construcción de ant. –

Cuestiones relacionadas