¿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 🙂

  • Android Proguard con tarro externo
  • ¿Cómo usar y empaquetar un archivo JAR con mi aplicación de Android?
  • ¿Cuál es la ventaja de apklib de la jarra?
  • Incapaz de construir: el archivo dx.jar no se cargó desde la carpeta SDK
  • Gradle pone archivos duplicados en el archivo apk
  • Shrink Debug Multi Dex Component; No se puede leer dir / allclasses.jar
  • Cómo enviar la biblioteca para Android
  • Carga dinámica de la biblioteca aar
  • Convertir APK en JAR
  • Cómo crear un Android Library Jar con gradle sin revelar públicamente el código fuente?
  • Cómo convertir un proyecto de biblioteca de Android en un JAR externo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.