¿Cómo hago referencia a los archivos JAR externos en un directorio común (no LIBS) para crear un proyecto de Android usando ANT?
Pregunta
Me gustaría crear varios proyectos de Android que hacen referencia a los mismos archivos JAR usando hormiga. No quiero copiar el archivo JAR en cada directorio LIBS en el proyecto (debido a cómo se configura el árbol de control de origen). los respuestas yo encontrar Aquí diga "Ponlos en el directorio Libs" que no resuelve este problema.
Entonces, la pregunta es, ¿cómo configuro mis scripts de construcción de Android Ant para hacer referencia a un frasco común en un directorio separado fuera del proyecto (no en "libs")?
Solución
En el SDK, hay archivos de hormiga debajo tools/ant
. En main_rules.xml
, puede encontrar la siguiente sección del código:
<!-- Directory for the third party java libraries -->
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<!-- create a path with all the jar files, from the main project and the
libraries -->
<path id="jar.libs.ref">
<fileset dir="${jar.libs.absolute.dir}" includes="*.jar" />
<path refid="project.libraries.jars" />
</path>
Así es como el código de construcción de hormiga determina de dónde obtener los frascos. Podrías sobrecargar el valor de jar.libs.dir
en su compilación. Propiedades ya que se lee antes de esta sección y sobrecargaría el valor. Señalar que en un directorio común que tiene la intención de usar hará lo que sugiere. Es posible que deba jugar con él algunos para que funcione de la manera que desee.
Una advertencia es que no estoy seguro de si esto afectará negativamente a otras actividades del ciclo de vida de construir.
Otros consejos
Parece que las herramientas SDK más nuevas hacen que esto sea más fácil de lograr. Tengo una carpeta Master Libs que todos mis proyectos de Android comparten y acabo de agregar esto al ant.properties
Archivo para que busque un nivel para esas libs.
jar.libs.dir=../libs
Según la pregunta aquí y mi respuesta tomada de aquí, la solución ofrecida no funciona a partir de ahora. Hasta que se corregiera el error archivado. La solución, como se menciona en la respuesta referenciada, se copia a continuación.
Agrego esto a mi custom_rules.xml
plantilla y parece estar funcionando bien. Supuse que son solo unas pocas líneas más que agregar ruta al ant.properties
Archivo hasta que obtengamos una mejor solución.
<target name="-pre-compile">
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path}"/>
<fileset dir="${jar.libs.dir}">
<include name="*.jar"/>
</fileset>
</path>
</target>
Si usa Linux, solo haga enlaces simbólicos de los archivos JAR externos, luego colóquelos todos en libs
. La hormiga funcionará bien.
Editado
Asegúrese de colocar todos los enlaces simbólicos directamente en libs
(no sub subgirores). Estoy seguro de que esto puede volver a configarse por el script de hormiga. Pero no estoy familiarizado con Ant :-)