usar studio sirve que para librerias libreria insertar importar generar create como android ant jar

studio - Cómo agregar bibliotecas jar externas a un proyecto de Android desde la línea de comando



insertar librerias en android studio (9)

Estoy tratando de construir un proyecto de Android que tenga algunas dependencias. Los archivos jar están en el directorio lib /. Puedo construir el proyecto agregando esos archivos jar a mi classpath, pero por supuesto Force Closes en el emulador porque esas bibliotecas no están presentes.

Estoy haciendo esto desde la línea de comando con hormiga ( no en eclipse). ¿Cómo puedo hacer que incluya esas bibliotecas en la aplicación desde la línea de comandos?


Al compilar, haz esto:

javac -encoding ascii -target 1.5 -d bin/classes / -bootclasspath $SDKDIR/android.jar src/some/project/* -classpath=libs/*.jar

Y, cuando está generando el bytecode para Dalvik:

dx --dex --output=bin/classes.dex bin/classes libs/*.jar

Además, cuando está empaquetando el archivo APK:

apkbuilder bin/something.apk -z bin/projectname.ap_ / -f bin/classes.dex -rf src -rj libs

Supongo que estás usando Linux ... en Windows será casi lo mismo.


El ejemplo anterior no funciona bien. No puede sobrescribir el proyecto.all.jars.path en línea. Lo siguiente es un ejemplo de trabajo:

<target name="-pre-compile"> <!-- HACK to add the android-support-v4.jar to the classpath directly from the SDK --> <echo>ORIGINAL jars.path : ${toString:project.all.jars.path}</echo> <path id="project.all.jars.path.hacked"> <path path="${toString:project.all.jars.path}"/> <path path="${sdk.dir}/extras/android/support/v4/android-support-v4.jar"/> </path> <path id="project.all.jars.path"> <path path="${toString:project.all.jars.path.hacked}"/> </path> <echo>HACKED jars.path : ${toString:project.all.jars.path}</echo> </target>


La propiedad jar.libs.dir es un solo directorio. No es como una CLASSPATH que es una lista separada por dos puntos / coma y coma. La forma de tener múltiples directorios en su jar.libs.dir es no configurarlo directamente; deje que sea predeterminado para libs y vaya a libs y cree los enlaces suaves requeridos a los archivos .jar que necesite.


La respuesta de Jay K estaba en el momento de escribir, pero ahora el SDK ha cambiado, y esta es la nueva forma de hacerlo:

Agregue la siguiente línea a ant.properties :

jar.libs.dir=lib

Probado, funciona donde external.libs.dir no funciona.
Eso cambió en diciembre de 2010 y nuevamente en octubre de 2011.


Respondiendo mi propia pregunta:

Creé un archivo "build.properties" y agregué la línea

external.libs.dir=lib

Fue una adivinación afortunada, realmente.


Si almacena sus bibliotecas en $ {basedir} / libs, el script ant será capaz de encontrarlas.

Miré el script actual de ant ($ {sdk.dir} /tools/ant/build.xml) y define jar.libs.dir como "libs".

FYI, el guión de la hormiga está bien documentado, así que es fácil de seguir.

Si mueves libs, asegúrate de editar tus archivos .classpath para evitar que los usuarios de eclipse sufran innecesariamente.


Solo para referencia futura: ahora hay un error en el SDK que impide el uso de jar.libs.dir: http://code.google.com/p/android/issues/detail?id=33194

Una solución simple para usar jar.libs.dir nuevamente (mientras se espera que el error se solucione), es agregar este destino en el archivo build.xml:

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


poner jars en el directorio ${YOUR_PROJECT}/libs


external.libs.dir=lib

después de 2 horas de buscar esta respuesta, esto funcionó para mí. El archivo jar en mi directorio libs finalmente compila Y se incluye con el APK.