¿Cómo hago referencia a los archivos jar externos en un directorio común (no libs) para construir el proyecto android usando hormiga?

Me gustaría construir varios proyectos de android que hacen referencia a los mismos archivos jar utilizando ant. No quiero copiar el archivo jar en cada directorio libs del proyecto (debido a cómo está configurado el árbol de control de origen). Las respuestas que encuentro aquí dicen "ponerlas en el directorio libs" que no soluciona este problema.

Por lo tanto, la pregunta es: ¿cómo configuro los scripts de compilación de hormigas android para hacer referencia a un jar común en un directorio separado fuera del proyecto (no en "libs")?

En el sdk, hay archivos de hormigas en tools/ant . En main_rules.xml , puede encontrar la siguiente sección de 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 la hormiga determina de dónde sacar los tarros. Podría sobrecargar el valor de jar.libs.dir en su build.properties ya que se lee antes de esta sección y sobrecargaría el valor. Señalando que en un directorio común que va a utilizar hará lo que está sugiriendo. Puede que necesite jugar con él para que funcione de la manera que desee.

Una advertencia es que no estoy seguro si esto afectará negativamente otras actividades del ciclo de vida de la estructura.

Parece que las nuevas herramientas de sdk hacen esto más fácil de lograr. Tengo una carpeta de librería maestra que comparten todos mis proyectos de Android y acabo de añadir esto al archivo ant.properties para que busque un nivel para esas librerías.

 jar.libs.dir=../libs 

Según la pregunta aquí y mi respuesta tomada desde aquí , la solución ofrecida no funciona a partir de ahora. Hasta que el error archivado sea fijo. La solución, como se menciona en la respuesta referenciada, se copia a continuación.


Añado esto a mi plantilla de custom_rules.xml y parece estar trabajando muy bien. Supongo que es sólo unas pocas líneas más que agregar ruta al archivo ant.properties hasta que obtengamos una solución mejor.

 <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 usas Linux, solo haz enlaces simbólicos de los archivos jar externos, luego libs en libs . Hormiga funcionará bien.

Editado

Asegúrese de colocar todos los enlaces simbólicos directamente en libs (no en subdirectorios). Estoy seguro de que esto puede ser re-config by ant script. Pero no estoy familiarizado con las hormigas 🙂

  • En una compilación de Android Gradle, ¿cómo excluir las dependencias de un archivo jar incluido?
  • Android Studio. No se puede incluir correctamente la biblioteca externa
  • NoClassDefFoundError en un jar anidado (Android)
  • Cómo convertir un proyecto de biblioteca de Android en un JAR externo?
  • Gradle pone archivos duplicados en el archivo apk
  • Cómo android almacena y ejecuta programas
  • Error: Múltiples archivos dex definen Landroid / support / annotations / AnimRes con Admob y Facebook Cordova plugins
  • En Android Studio, ¿cómo puedo cambiar un proyecto de aplicación a una biblioteca?
  • ClassNotFoundException con Parse y Facebook
  • Android Studio: Error al cargar dx.jar
  • El archivo .aar generado está dando clases vacías.
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.