Agregar una biblioteca/JAR a un proyecto de Eclipse Android

8 minutos de lectura

Agregar una bibliotecaJAR a un proyecto de Eclipse Android
Russ Bateman

Esta es una pregunta de dos partes sobre cómo agregar una biblioteca de terceros (JAR) a un proyecto de Android en Eclipse.

La primera parte de la pregunta es, cuando trato de agregar un JAR (biblioteca) de terceros a mi proyecto de Android, primero tengo el problema de

Error al analizar XML: prefijo no enlazado

porque estoy tratando de usar una clase de ese JAR (y necesito el prefijo definido de alguna manera). ¿Qué está sucediendo?

En segundo lugar, (después de arreglar eso, la respuesta se da a continuación), mi aplicación no funciona en Android y descubro a través del depurador (LogCat) que la clase que intento consumir no existe.

Causado por: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView…

¿Por qué, cuando no obtengo un error de compilación o vinculación en Eclipse, tiene este problema en el emulador?

Estas dos preguntas son retóricas porque las voy a responder yo mismo a continuación. Otras publicaciones en este foro abordan el problema y en otros lugares hay discusión, pero siento que puedo ser más explícitamente útil para el próximo tipo que venga.

Agregar una bibliotecaJAR a un proyecto de Eclipse Android
Russ Bateman

Ahora para el problema de la clase que falta.

Soy un desarrollador de Eclipse Java EE y he tenido la costumbre durante muchos años de agregar bibliotecas de terceros a través del mecanismo “Biblioteca de usuario” en Build Path. Por supuesto, hay al menos 3 formas de agregar una biblioteca de terceros, la que yo uso es la más elegante, en mi humilde opinión.

Sin embargo, esto no funcionará para Android, cuya “JVM” Dalvik no puede manejar una clase ordinaria compilada en Java, sino que debe convertirla a un formato especial. Esto no sucede cuando agrega una biblioteca de la forma en que suelo hacerlo.

En su lugar, siga las instrucciones (ampliamente disponibles) para importar la biblioteca de terceros y luego agréguela usando Build Path (que se lo da a conocer a Eclipse con fines de compilación). Aquí está el paso a paso:

  1. Descargue la biblioteca a su sistema de desarrollo host.
  2. Crear una nueva carpeta, liberacionesen su proyecto Eclipse/Android.
  3. Botón derecho del ratón liberaciones y elija Importar -> General -> Sistema de archivos, luego Siguiente, Examinar en el sistema de archivos para encontrar el directorio principal de la biblioteca (es decir, donde lo descargó).
  4. Haga clic en Aceptar, luego haga clic en el nombre del directorio (no en la casilla de verificación) en el panel izquierdo, luego marque el JAR relevante en el panel derecho. Esto pone la biblioteca en su proyecto (físicamente).
  5. Haga clic derecho en su proyecto, elija Build Path -> Configure Build Path, luego haga clic en la pestaña Libraries, luego Add JARs…, navegue hasta su nuevo JAR en el liberaciones directorio y agréguelo. (Este, por cierto, es el momento en el que su nuevo JAR se convierte para su uso en Android).

NOTA

Es posible que el paso 5 no sea necesario si la lib ya está incluida en su ruta de compilación. Solo asegúrese de que su existencia primero antes de agregarlo.

Lo que has hecho aquí logra dos cosas:

  1. Incluye un JAR convertido a Dalvik en tu proyecto de Android.
  2. Hace que las definiciones de Java estén disponibles para Eclipse para encontrar las clases de terceros al desarrollar (es decir, compilar) el código fuente de su proyecto.

  • Russ, probablemente deberías comenzar otra pregunta por separado. Esta “respuesta” parece un poco extraña sentada aquí.

    – Pablo Gregorio

    4 de septiembre de 2010 a las 16:29

  • Entonces, reescribí partes de la pregunta un poco. He resistido la tentación de hacer lo fácil (lo que sugieres aquí) porque realmente creo que ambos problemas surgen al intentar agregar una biblioteca de terceros y apuesto a que cualquiera que tenga el segundo problema probablemente habrá tenido la el primero también. Gracias.

    – Russ Bateman

    4 sep 2010 a las 17:24

  • Ojalá hubiera habido algo más explícito sobre esto en los documentos formales de Android (todavía no me he topado con él) y otras respuestas en otros foros se acercan, pero nunca dejan de lado el problema. Tenga en cuenta que en BlackBerry, este mismo problema es una gran pesadilla sin que nadie brinde información confiable sobre cómo resolverlo; no estoy seguro de qué haré allí.

    – Russ Bateman

    4 de septiembre de 2010 a las 17:26

  • Hola, @RussBateman. Probé los pasos que mencionó anteriormente y pude incluir con éxito el contenedor de la biblioteca en mi proyecto de Android, por lo que las clases de la biblioteca estaban accesibles para mi proyecto en tiempo de compilación. Pero cuando ejecuto el proyecto, aparece un error. en mi consola: “La conversión al formato Dalvik falló con el error 1” … ¡y mi proyecto no se iniciaría!

    – Zeba

    12 de abril de 2012 a las 7:53

  • Bajo ciertas circunstancias, esto no funciona… No recuerdo exactamente lo que hice, eliminé la carpeta libs, la leí… ahora hice todo lo que dijiste, agregue libs, importe el jar, agregue a la ruta de compilación… Los errores del compilador desaparecieron, pero aún se obtiene una excepción de tiempo de ejecución de que no se encuentra la clase 🙁

    – Usuario

    2 jun 2012 a las 20:36


Asegúrese de que sus archivos jar de terceros estén en la carpeta “libs” de sus proyectos y se colocarán en el .apk cuando empaque su aplicación. Es posible que vea errores de tiempo de ejecución en el dispositivo si algo en el contenedor no es compatible, pero aparte de eso, he tenido un gran éxito con esto.

  • Se trata de experiencia, he tenido el mismo problema antes 🙂

    – Pablo Gregorio

    4 de septiembre de 2010 a las 16:27

  • Gracias señor, pero apesta ver que la carpeta libs necesita la copia de los archivos Jar externos que ya tenemos en el repositorio de Maven o en algún otro lugar.

    – preguntas

    27/03/2013 a las 19:40

  • Lamentablemente, esto ya no funciona automáticamente, también debe decirle a Eclipse que incluya las bibliotecas en los archivos del paquete.

    –Neil Townsend

    27 de agosto de 2013 a las 14:02

  • ¿Cuándo cambió eso? Este es un gran cambio a lo que todos estamos acostumbrados.

    – Pablo Gregorio

    27 de agosto de 2013 a las 14:37

Configuración de un proyecto de biblioteca

Un proyecto de biblioteca es un proyecto estándar de Android, por lo que puede crear uno nuevo de la misma manera que lo haría con un nuevo proyecto de aplicación.

Cuando crea el proyecto de biblioteca, puede seleccionar cualquier nombre de aplicación, paquete y establecer otros campos según sea necesario, como se muestra en la figura 1.

A continuación, establezca las propiedades del proyecto para indicar que es un proyecto de biblioteca:

En el Explorador de paquetes, haga clic con el botón derecho en el proyecto de biblioteca y seleccione Propiedades. En la ventana Propiedades, seleccione el grupo de propiedades “Android” a la izquierda y localice las propiedades de la Biblioteca a la derecha. Seleccione la casilla de verificación “es Biblioteca” y haga clic en Aplicar. Haga clic en Aceptar para cerrar la ventana Propiedades. El nuevo proyecto ahora está marcado como un proyecto de biblioteca. Puede comenzar a mover el código fuente y los recursos, como se describe en las secciones a continuación.

Si está utilizando la versión 22 de ADT, debe verificar las dependencias de Android y las bibliotecas privadas de Android en la pestaña ordenar y exportar en la ruta de compilación del proyecto.

Primero, el problema del prefijo faltante.

Si consume algo en su archivo de diseño que proviene de un tercero, es posible que también deba consumir su prefijo, algo como “droidfu:” que aparece en varios lugares en la construcción XML a continuación:

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

Esto sale del JAR, pero también deberá agregar el nuevo “xmlns: droidfu”

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

o obtiene el error de prefijo no enlazado. Para mí, esto fue un error al copiar y pegar todos los ejemplos proporcionados de las páginas de la biblioteca de terceros.

Agregar una bibliotecaJAR a un proyecto de Eclipse Android
Comunidad

Error al analizar XML: prefijo no enlazado

El recurso ‘/playteddy/res’ no existe.

Recibí los dos errores anteriores y finalmente lo resolví.

Haga clic con el botón derecho en su proyecto -> propiedades -> ruta de compilación de Java -> googleadmobadsdk (seleccione y colóquelo en la parte superior), luego ejecute y resuelva el problema. Se solucionó mi error de tiempo de ejecución.

1646974689 332 Agregar una bibliotecaJAR a un proyecto de Eclipse Android
Leandro

Coloque la fuente en una carpeta fuera de su espacio de trabajo. Haga clic con el botón derecho en el explorador de proyectos y seleccione “Importar…”

Importe el proyecto en su espacio de trabajo como un proyecto de Android. Intente compilarlo y asegúrese de que esté marcado como un proyecto de biblioteca. También asegúrese de que esté compilado con la compatibilidad con la API de Google; de ​​lo contrario, obtendrá errores de compilación.

Luego, haga clic derecho en su proyecto principal en el explorador de proyectos. Seleccione propiedades, luego seleccione Android a la izquierda. En la sección de la biblioteca a continuación, haga clic en “Agregar”.

La biblioteca mapview-balloons ahora debería estar disponible para agregar a su proyecto.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad