2010-09-04 21 views
128

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

La primera parte de la pregunta es, cuando intento agregar un JAR de terceros (biblioteca) para mi proyecto Android primera vez que consigo el problema de

error de análisis XML: prefijo no unido

porque estoy tratando de usar una clase de ese JAR (y necesito el prefijo de alguna manera definido). ¿Que esta pasando?

En segundo lugar, (después de la fijación que - la respuesta se da a continuación), mi aplicación no funciona en Android y descubrir a través del depurador (LogCat) que la clase que estoy tratando de consumir no existe.

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

Por qué, cuando me sale error de compilación o enlazador en Eclipse, lo hace tener este problema en el emulador?

Estas dos preguntas son retóricas porque voy a responderlas yo mismo a continuación. Otros mensajes en este foro se arrastran hasta el problema y en otros lados hay discusión, pero siento que puedo ser más explícitamente útil para el siguiente tipo que venga.

Respuesta

317

Ahora para el problema de clase faltante.

Soy un desarrollador de Eclipse Java EE y durante muchos años he tenido la costumbre de agregar bibliotecas de terceros a través del mecanismo "Biblioteca de usuarios" 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.

Esto no funcionará, sin embargo, para Android, cuya Dalvik "JVM" no puede manejar una clase ordinaria compilada en Java, pero debe tenerla convertida a un formato especial. Esto no sucede cuando agrega una biblioteca de la manera en que lo haré.

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

  1. Descargue la biblioteca de su host sistema de desarrollo.
  2. Cree una nueva carpeta, libs, en su proyecto Eclipse/Android.
  3. Haga clic libs y elija Importación -> General -> Sistema de archivos, a continuación, A continuación, en Examinar en el sistema de archivos para encontrar directorio padre de la biblioteca (es decir .: donde descargó a).
  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 JAR relevante en el panel derecho. Este coloca la biblioteca en su proyecto (físicamente).
  5. Haga clic derecho en su proyecto, elija Generar Path -> Configurar Construir Path, a continuación, en la pestaña Bibliotecas, a continuación, añadir JAR ..., vaya a su nueva JAR en las librerías directorio y complemento eso. (Esto, por cierto, es el momento en que se convierte en su nuevo JAR para su uso en Android.)

NOTA

Paso 5 puede no ser necesario, si el lib ya está incluido en la ruta de compilación. Solo asegúrate de que exista antes de agregarlo.

Lo que has hecho aquí se logran dos cosas:

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

Russ, probablemente deberías comenzar otra pregunta por separado. Esta "respuesta" parece extraña sentada aquí. –

+3

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 surgen ambos problemas al intentar agregar una biblioteca de terceros y estoy apostando a que cualquiera que tenga el segundo problema probablemente haya tenido la el primero también. Gracias. –

+0

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

20

Asegúrese de que los archivos jar de terceros estén en la carpeta de proyectos "libs" y se colocarán en la .apk cuando empaquete su aplicación. Puede ver 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.

+0

Sí, gracias, yo estaba en mi manera de escribir que responder. –

+1

Todo es cuestión de experiencia, he tenido el mismo problema antes :) –

+0

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

2

Primero, el problema del prefijo faltante.

Si usted consume algo en su archivo de diseño que proviene de un tercero, puede que tenga que consumir su prefijo, así, algo así como "droidfu:" que se produce en varios lugares en el XML construir 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 viene de la jarra, pero también tendrá que añadir los nuevos "xmlns: droidfu"

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

o se obtiene el error prefijo unido. Para mí, fue una falla al copiar y pegar todo el ejemplo proporcionado de las páginas de la biblioteca de terceros.

5

La creación de un proyecto de Biblioteca

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

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

A continuación, establezca las propiedades del proyecto para indicar que se trata de una proyecto de biblioteca:

En el Explorador de paquetes, haga clic con el botón derecho en el proyecto de la biblioteca y seleccione Propiedades. En la ventana Propiedades, seleccione el grupo de propiedades "Android" a la izquierda y ubique las propiedades de la Biblioteca a la derecha. Seleccione la casilla "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 en él, como se describe en las secciones a continuación.

1

error de análisis XML: prefijo no unido

'/ playteddy/res' no existe de recursos.

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

Haga clic derecho en su proyecto -> propiedades -> ruta de compilación java -> googleadmobadsdk (selecciónelo y póngalo arriba), luego ejecute y resuelva el problema. Se solucionó mi error de tiempo de ejecución.

0

Coloque la fuente en una carpeta fuera de su área 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. Intenta compilarlo y asegúrate de que esté marcado como un proyecto de biblioteca. También asegúrese de que sea compatible con la API de Google, de lo contrario obtendrá errores de compilación.

A continuación, haga clic con el botón derecho en su proyecto principal en el explorador del proyecto. Selecciona propiedades, luego selecciona Android a la izquierda. En la sección de la biblioteca a continuación, haga clic en "Añadir" ..

La biblioteca MapView-globos debería estar disponible para agregar a su proyecto ..

0

recorrer para construir el camino en eclipse, a continuación, en el orden y la exportación, luego verifique la biblioteca/jar, y luego haga clic en el botón arriba para moverlo a la parte superior de la lista y compilarlo primero.

4

Si está utilizando la versión de ADT 22, es necesario comprobar las dependencias androide y bibliotecas privadas androide en la ficha Exportar fin & en la trayectoria de la estructura del proyecto

Cuestiones relacionadas