¿Cómo hago referencia a los archivos JAR externos en un directorio común (no LIBS) para crear un proyecto de Android usando ANT?

StackOverflow https://stackoverflow.com/questions/5312478

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")?

¿Fue útil?

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 :-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top