¿Cómo puedo usar JAR externos en un proyecto de Android?

326

Creé un proyecto de Android y agregué un JAR externo (hessian-4.0.1.jar) a mi proyecto. Luego agregué el JAR a la ruta de compilación y lo marqué en Orden y exportación.

Parece que se ignora Order and Export, y faltan todas las clases del JAR externo en tiempo de ejecución.

¿Hay algún truco para incluir correctamente las clases necesarias de un JAR externo al crear una aplicación de Android con el complemento Eclipse? No quiero usar hormiga o Maven.

AndroidSmoker74
fuente
1
como ya descubrió: esto es causado por dependencias en hessian-4.0.1.jar. Si desea usar Hessian con Android, use Hessdroid ( code.google.com/p/hessdroid ). No es muy activo, pero funciona bien para mí incluso en Android 4.0.
Ice09
1
Consulte también "NoClassDefFoundError para el código en una biblioteca Java en Android" para ver un problema común cuando se utilizan jarras externas. Una solución simple .
Flujo

Respuestas:

443

Para Eclipse

Una buena manera de agregar JAR externos a su proyecto de Android o cualquier proyecto de Java es:

  1. Cree una carpeta llamadalibs en la carpeta raíz de su proyecto
  2. Copie sus archivos JAR a la libscarpeta
  3. Ahora haga clic derecho en el archivo Jar y luego seleccione Build Path> Add to Build Path , que creará una carpeta llamada 'Bibliotecas referenciadas' dentro de su proyecto

    Al hacer esto, no perderá sus bibliotecas a las que se hace referencia en su disco duro cada vez que transfiera su proyecto a otra computadora.

Para Android Studio

  1. Si está en la vista de Android en el explorador de proyectos, cámbielo a la vista de proyectos como se muestra a continuación

Imagen perdida

  1. Haga clic derecho en el módulo deseado donde desea agregar la biblioteca externa, luego seleccione Nuevo> Directroy y asígnele el nombre ' libs '
  2. Ahora copie el archivo blah_blah.jar en la carpeta ' libs '
  3. Haga clic derecho en blah_blah.jar, luego seleccione ' Agregar como biblioteca ... '. Esto agregará automáticamente una entrada en build.gradle como archivos de compilación ('libs / blah_blah.jar') y sincronizará el gradle. Y ya terminaste

Tenga en cuenta: si está utilizando bibliotecas de terceros, entonces es mejor usar dependencias transitivas donde el script Gradle descarga automáticamente el JAR y el JAR de dependencia cuando se ejecuta el script gradle.

Ej: compile 'com.google.android.gms: play-services-ads: 9.4.0'

Leer más sobre Gradle Dependency Mangement

Vinayak Bevinakatti
fuente
49
Tenga en cuenta que cuando se utilizan versiones recientes de Eclipse / ADT, los libslib
archivos jar
44
@ THelper - ¡Gracias! Tiene razón, la carpeta debe llamarse "libs" y no "lib". Estaba golpeando mi cabeza por este problema.
Camille Sévigny
77
En versiones recientes del SDK, el paso 3 (agregar el JAR manualmente a la Ruta de compilación) no es necesario. Pero si tiene un IDE, como Eclipse abierto en el momento en que suelta el archivo, deberá realizar una actualización del proyecto (F5 y / o menú contextual Actualizar en el Explorador de paquetes).
Jon Adams
44
¿Cómo se hace desde la línea de comando? ¿Qué archivo de configuración debo editar y cómo?
Kristian Spangsege
13
Este enfoque ha estado desactualizado desde principios de 2012. Simplemente agregue el JAR a libs/. No modifique manualmente la ruta de compilación.
CommonsWare
127

Sí, puedes usarlo. Aquí es cómo:

  1. Su proyecto -> clic derecho -> Importar -> Sistema de archivos -> yourjar.jar
  2. Su proyecto -> haga clic con el botón derecho -> Propiedades -> Ruta de compilación de Java -> Bibliotecas -> Agregar jar -> yourjar.jar

Este video puede ser útil en caso de que tenga algunos problemas.

MannyNS
fuente
55
Este enfoque no está actualizado desde principios de 2012. Simplemente agregue el JAR a libs /. No modifique manualmente la ruta de compilación.
CommonsWare
Intenté varias formas de agregar la ruta de compilación. Solo de esta manera puedo arreglar la excepción Clase no encontrada después de migrar un proyecto a otra PC
Mickey
La PRIMERA solución está desactualizada y no funcionará BIEN.
Yousha Aleayoub
5

Actualmente estoy usando SDK 20.0.3 y ninguna de las soluciones anteriores funcionó para mí.

La razón por la que hessdroid funciona donde hess falló es porque los dos archivos jar contienen Java que se compila para diferentes máquinas virtuales. No se garantiza que el código de bytes creado por el compilador de Java se ejecute en la máquina virtual Dalvik. No se garantiza que el código de bytes creado por el compilador de Android se ejecute en la máquina virtual Java.

En mi caso, tuve acceso al código fuente y pude crear un archivo jar de Android utilizando el método que describí aquí: https://stackoverflow.com/a/13144382/545064

Danny Remington - OMS
fuente
5

Sé que el OP termina su pregunta con referencia al complemento Eclipse, pero llegué aquí con una búsqueda que no especificaba Eclipse. Así que aquí va para Android Studio:

  1. Agregar jararchivo al directorio libs (como copiar / pegar)
  2. Haga clic derecho en el jararchivo y seleccione "Agregar como biblioteca ..."
  3. haga clic en "Aceptar" en el siguiente cuadro de diálogo o cambie el nombre si lo desea.

¡Eso es!

shanabus
fuente
4

Resulta que no me he visto lo suficientemente bien en mi seguimiento de pila, el problema no es que el JAR externo no esté incluido.

El problema es que a la plataforma de Android le falta javax.naming. * Y muchos otros paquetes de los que el JAR externo también tiene dependencias.

Agregar archivos JAR externos y configurar Orden y Exportar en Eclipse funciona como se espera con los proyectos de Android.


fuente
3

Ir al proyecto actual

RightClick-> Propiedades-> Java Build Path-> Agregar archivos Jar a las bibliotecas -> Haga clic en Aceptar

Luego se agrega al archivo de bibliotecas referenciadas en su proyecto actual.

kalyan G
fuente
1

La API Java de Android no es compatible con javax.naming. * Y muchas otras cosas javax. *. Debe incluir las dependencias como frascos separados.

Rodrigo
fuente
1

Si usa Android Studio, haga lo siguiente (he copiado y modificado la respuesta de @Vinayak Bs):

  1. Seleccione la vista Proyecto en la vista lateral Proyecto (en lugar de Paquetes o Android)
  2. Cree una carpeta llamada libs en la carpeta raíz de su proyecto
  3. Copie sus archivos JAR a la carpeta libs
  4. La vista lateral se actualizará y los archivos JAR aparecerán en su proyecto.
  5. Ahora haga clic derecho en cada archivo JAR que desee importar y luego seleccione "Agregar como biblioteca ...", que lo incluirá en su proyecto
  6. Después de eso, todo lo que necesita hacer es hacer referencia a las nuevas clases en su código, por ejemplo. import javax.mail.*
kumaheiyama
fuente
1

en Android Studio si usa Gradle

agregue esto a build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

y agregue el archivo jar a la carpeta libs

g_vk
fuente
1

Si está utilizando el sistema de construcción Gradle , siga estos pasos:

  1. poner jararchivos dentro de la libscarpeta respectiva de su aplicación de Android. En general, usted encontrará en Project> app> libs. Si libsfalta la carpeta, cree una.

  2. agregue esto a su build.gradlearchivo app. (No a sus Project's build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Esto incluirá todos sus jararchivos disponibles en la libscarpeta.

Si no desea incluir todos los jararchivos, puede agregarlos individualmente.

compile fileTree(dir: 'libs', include: 'file.jar')

Rohit Arya
fuente
0

cree una carpeta (como lib) dentro de su proyecto, copie su jarra a esa carpeta . ahora vaya a configurar la ruta de compilación haciendo clic derecho en el proyecto, allí en la ruta de compilación seleccione

'agregar jar' busque la carpeta que creó y elija el jar.

sharma_kunal
fuente
0

Copiar el archivo .jar en la carpeta del proyecto de Android no siempre es posible.
Especialmente si es una salida de otro proyecto en su espacio de trabajo, y se sigue actualizando.

Para resolver esto, tendrá que agregar el jar como un archivo vinculado a su proyecto, en lugar de importarlo (lo que lo copiará localmente).

En la interfaz de usuario, elija:

Proyecto -> Importar -> Sistema de archivos -> yourjar.jar -> (Área de opciones) Avanzado -> Crear enlace en el espacio de trabajo.

El enlace se guarda en el archivo .project :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC significa relativo al archivo del proyecto, 5 directorios hacia arriba (../../../../../).

Luego agréguelo a las bibliotecas:
Proyecto -> Propiedades -> Ruta de compilación de Java -> Bibliotecas -> Agregar jar -> yourjar.jar

En la misma ventana, elija la pestaña Ordenar y Exportar y marque su jarra para que se agregue a la apk.

Yochai Timmer
fuente