2010-03-17 6 views
18

Tengo un proyecto existente que funciona bien usando mi IDE. Me gustaría usar el comando "android update" para generar un archivo de compilación de hormigas para este proyecto.¿Cómo construir una aplicación de Android con librerías externas usando hormiga?

El BuildFile se genera bien, pero la generación falla porque no es la construcción con algunos jarfiles que tengo en mi directorio libs.

me gustaría averiguar la forma correcta de decirle a la hormiga para construir con algunos archivos JAR externos en mi directorio libs. ¿Cómo debería hacer esto? ¿Es una propiedad en build.properties? ¿Debo modificar build.xml de alguna manera? ¿O hay una solución diferente por completo?

Respuesta

32

pero la generación falla porque no es edificio con algunas jarfiles que tengo en mi directorio libs .

Y su mensaje de error es ... ¿qué? Sospecho que puede estar malinterpretando el mensaje de error.

me gustaría averiguar la forma correcta de decir hormiga para construir con algunos archivos JAR externos en mis librerías de directorio. ¿Cómo debería hacer esto?

Simplemente póngalos en libs/, ya que Ant agregará todo lo que hay en su ruta de compilación. Vea this project, y this project, y this project para ver ejemplos.

+1

Ah, el problema es que uno de mis dependencias es una dependencia de proyecto en lugar de una dependencia frasco. Lo arreglaré. – emmby

+0

Gracias commonsware. Si desea dar un vistazo en un seguimiento, tengo otra pregunta aquí: http://stackoverflow.com/questions/2466437/how-to-build-an-android-test-app-with-a -dependency-on-another-app-using-ant – emmby

+0

Sí, lo vi. No soy un fan del marco de prueba de Android, así que no sé la respuesta allí. ¡Lo siento! – CommonsWare

1

Estoy de acuerdo con Mark, sin embargo, si usted está planeando para modificar su escritura de la estructura más - de lo que necesita para que sea personalizado. Lleve tareas de android/platforms/android-PLATFORMVERSION/templates/android_rules.xml a su build.xml y modifique lo que quiera modificar. Incluyendo la ubicación de libs externos.

14

pasé algún tiempo tratando de conseguir la API de Facebook para trabajar con la hormiga. El truco para mí fue agregar esto a mis archivos default.properties.

android.library.reference.1=../Facebook 

Dónde ../Facebook contiene AndroidManifest.xml, etc. La verdadera clave es la ruta relativa. No use una ruta absoluta porque Ant parece tratar el directorio de su proyecto como la raíz.

Esto debe ser cierto para otros proyectos de la biblioteca que va a incluir desde el código fuente.

+0

¡muy útil! ¡Gracias! – wallacer

+0

Eche un vistazo a TicTacToeLib y TicTacToeMain en ejemplos de SDK. Y lea los archivos README.txt. – douyw

+1

Esta fue exactamente la respuesta que necesitaba, breve y hasta el punto. – gregko

8

que estaba tratando con problema similar. Estoy desarrollando un proyecto de Android en Jenkins usando Ant build.xml (generado por Android SDK). También tengo referencia a otro proyecto de Java con algunas clases de dominio compartidas. En Eclipse no hay ningún problema con eso. El proyecto de dominio es una referencia de proyecto. Sin embargo, en Jenkins este dominio.jar está construido por Maven y no fue accesible por el proyecto de Android.

que finalmente han resuelto añadiendo esto al final de build.xml:

<target name="-pre-build"> 
    <copy todir="${jar.libs.dir}"> 
    <fileset 
     dir="../path-to-another-project/target" 
     includes="*.jar" /> 
    </copy> 
</target> 

Esto copia todos los tarros del directorio de destino de otro proyecto en el directorio "libs" de mi proyecto Android. El objetivo Ant -pre-build se llama automáticamente antes de que comience la compilación de Android.

+6

En lugar de cambiar build.xml, debe agregar un custom_rules.xml al mismo directorio que build.xml. Coloque el objetivo de -pre-build allí y build.xml lo importará automáticamente. custom_rules.xml puede contener todas tus operaciones de compilación previa y posterior – wallacer

Cuestiones relacionadas