Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Ant se basa en un proyecto con dos carpetas de origen

Tengo un proyecto con una carpeta de origen vinculada. Este proyecto depende de otro proyecto (de servicio remoto), por lo que los archivos aidl y las clases pasadas a través de la interfaz remota están en una carpeta common_src vinculada compartida entre los dos proyectos. Este trabajo muy bien con las compilaciones de Eclipse, (un archivo de origen, dos proyectos, los cambios en un proyecto se reflejan en el otro, tal como debe ser).

Ahora me gustaría hacer una construcción de hormigas desde la línea de comandos. Me las arreglé para obtener otro proyecto con un solo edificio de directorios src a través de todos los objetivos utilizando el ejemplo build.xml de las herramientas de SDK. Importa ant_rules_r3.xml automáticamente y una vez que el source.dir y out.dir se definen en el build.properties es todo bastante indoloro.

Pasando al proyecto con las carpetas src y common_src , no puedo hacerlo para construir. En primer lugar, cortar y pegar el destino de compilación y todos los que depende en el build.xml encima de la tarea de instalación. build.properties y build.properties el elemento common_src a la build.properties y añadí la última línea que se muestra a continuación al -compile target (copiado de ant_rules_r3.xml ) en la build xml :

  <src path="${source.absolute.dir}" /> <src path="${gen.absolute.dir}" /> <src path="${common_src}" /><!--ADDED--> 

Que lo consiguió más adelante en el proceso de construcción – podría encontrar los archivos .java en common_src pero no los archivos .aidl. Ninguna sorpresa me di cuenta de que el aidl es un objetivo separado. Luego agregé

 <src path="${common_src}" /> 

Al objetivo -aidl en el xml de construcción, y falló con:

 BUILD FAILED C:\dev\projects\Eclipse\AndroidWorkspace\MapProject\build.xml:77: aidl doesn't support the nested "src" element. 

Así que eso me tiene bien y verdaderamente atrapado. Idealmente, me gustaría modificar sólo el archivo build.properties para incluir el common_src y pasarlo a ant_rules_r3.xml pero no puedo pensar en una manera de hacerlo. Estaría muy agradecido si alguien puede sugerir cómo se puede hacer.

6 Solutions collect form web for “Android Ant se basa en un proyecto con dos carpetas de origen”

Tuve un problema similar, pero parece haber sido resuelto para mí por la siguiente configuración en mi archivo build.properties:

 source.dir = src;../other_project/src 

Utilicé una ruta de acceso relativa para vincular mi src a other_project, pero debería ser capaz de usar una ruta absoluta. Si lo hace, probablemente debería ponerlo en local.properties en su lugar.

Nota: de acuerdo con los comentarios en build.properties, si mi versión de SDK <2.0 Yo usaría esto en su lugar:

 source-folder = src;../other_project/src 

En caso de que haya algún interés, pensé que respondería a mi propia pregunta, que ahora está resuelta.

1) He definido el common_src en el build.properties

2) Añadido la línea

 <src path="${common_src}" 

En un compilado overriden objetivo en el build.xml por encima de la configuración (además de sobrepasar todos los objetivos que dependía de cortar / pegar de la ant_rules_r3.xml) 3) Se agregó un nuevo objetivo 'aidl2' el mismo que 'aidl' en la construcción. Xml pero que tenía la línea

<source path="${common_src}" lugar de

 <source path="${source.absolute.dir}" . 

La ayuda dependerá de la ayuda. Sobrepasó todos los objetivos de los que dependía.

También agregué líneas como:

 key.store=xxxxxxxxxxxxx key.alias=xxxxxxxxxxxxx key.store.password=xxxxxxxxxxxxx key.alias.password=xxxxxxxxxxxxx 

A la build.xml que automatizó la entrada de contraseñas. Finalmente agregé un objetivo de install_release para crear un comando automático de creación, instalación e instalación.

No puedo comentar porque no tengo suficiente reputación, pero si la adición de una carpeta de origen funciona con respuestas anteriores, falla más tarde al construir jar:


 compilar:
     [Javac] Compilando 463 archivos de origen en / home / xxx / documents / eclipse / xxx / deploy / xxx / bin / classes
     [Javac] Nota: Algunos archivos de entrada utilizan o reemplazan una API obsoleta.
     [Javac] Nota: recompile con -Xlint: deprecation para más detalles.
     [Javac] Nota: Algunos archivos de entrada utilizan operaciones no comprobadas o inseguras.
     [Javac] Nota: recompile con -Xlint: sin marcar para más detalles.
     [Javac] Creación de archivos vacíos /home/xxx/documents/eclipse/xxx/deploy/xxx/bin/classes/fr/xxx/android/socialintegration/facebook/package-info.class
      [Echo] Crear archivo jar de salida de biblioteca ...

 CONSTRUCCIÓN FALLIDA
 /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:570: Se ha producido el siguiente error al ejecutar esta línea:
 /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:680: Se ha producido el siguiente error al ejecutar esta línea:
 /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:744: /home/xxx/documents/eclipse/xxx/deploy/xxx/src;../xxxdata/src no existe.

La parte defectuosa se encuentra en el edificio del frasco que usa source.absolute.dir como un filset que en inválido para hormiga.

Pero no tengo ninguna solución por el momento y no entiendo por qué otros han logrado hacer que funcione … (También estoy usando sdk r20)

Añadir ; Lista separada de fuentes a su ant.properties (no se olvide de incluir por defecto src también):

 source.dir=src-other;src 

Arriba funciona bien con Android SDK Tools Revisión 20.0.3+ (Objetivo del proyecto: Android 2.2 o superior, nivel API: 8+).

Aquí está la solución:

Actualizar su build.xml para más de un source.dir

https://stackoverflow.com/a/14786100/2732600

Al menos en versiones posteriores de las herramientas de compilación, el problema es que el valor puesto en esta propiedad se pasa a un <property name="source.absolute.dirs" location="source.dirs"/> . El atributo de location no sabe cómo tratar con rutas separadas por punto y coma / punto y coma.

La solución es muy simple, sólo tiene que utilizar:

 source.absolute.dirs=src1:src2:src3 

Etc, en contraposición a:

 source.dirs=src1:src2:src3 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.