Las bibliotecas ya no se agregan a APK después de la actualización a ADT 22


238

Tengo un proyecto de aplicación de Android bastante grande que hace referencia a varios proyectos de biblioteca. Todo estuvo bien hasta que actualicé el complemento eclipse ADT a la versión más reciente (v22). También actualicé el SDK, por supuesto. No veo ningún error de compilación en eclipse, pero cuando ejecuto el proyecto en el teléfono obtengo un NoClassDefFoundError.

java.lang.NoClassDefFoundError: org.acra.ACRA
....

La biblioteca arca está incluida en uno de los proyectos de biblioteca referenciados (en la carpeta libs) y puedo verla en las "Bibliotecas privadas de Android" en el explorador de paquetes, también, como dije, no hay errores de compilación. El proyecto funciona bien en la computadora de todos los demás que no actualizaron ADT.

Ya he probado un montón de cosas que incluyen pero no se limitan a:

  • reinstale el SDK de Android
  • descargar un paquete ADT nuevo
  • eliminar todo mi código y obtenerlo de nuevo de git
  • copiar la biblioteca en cuestión al proyecto de la aplicación
  • comente el código que usa esta biblioteca; acabo de recibir el mismo error para la próxima biblioteca

todo sin éxito, así que me estoy desesperando mucho aquí.

Sería realmente feliz si alguien pudiera darme una pista sobre cómo resolver ese problema.

Respuestas:


337

Citando Streets of Boston de su publicación adt-dev :

Al actualizar, el 'Pedido y exportación' de las nuevas 'Bibliotecas privadas de Android' no siempre está marcado. Y android-support-v4.jar ahora se encuentra en esta sección 'Bibliotecas privadas de Android'.

Para solucionar esto, vaya a 'Ordenar y exportar' y marque 'Bibliotecas privadas de Android'. Luego actualizar / limpiar / reconstruir.

Después de hacer esta 'corrección' para un proyecto de biblioteca, es posible que deba cerrar y volver a abrir cualquier proyecto dependiente, ya que es posible que no vean esta 'corrección' de inmediato.

Intente esto y con suerte resolverá su problema.

ingrese la descripción de la imagen aquí


32
CommonsWare es como siempre uno de los primeros pioneros, ¡muchas gracias! :)
Paul Wein

1
Una nueva versión de ADT, una nueva sorpresa;) Espero que el nuevo sistema de compilación sea mejor. Gracias CommonsWare
lujop

3
¿Soy solo yo o suena mal que todos los desarrolladores [que usan Eclipse y las bibliotecas] vayan a todos sus proyectos de biblioteca y marquen "Bibliotecas privadas de Android" como Exportadas? Esto me hace pensar que todos hemos confundido la intención de Google al agregar esta nueva "característica" en primer lugar. Tal vez no debemos marcar las Bibliotecas como Exportadas. Tal vez se supone que debemos agregar cualquier archivo jar que falte directamente a nuestra carpeta "libs". Ej: Esto permitiría que mi proyecto de biblioteca use el último android-support-v4.jar [v13], mientras que ABS usa internamente android-support-v4-12.jar.
swooby

2
@swooby: "¿Soy solo yo o suena mal que todos los desarrolladores [que usan Eclipse y las bibliotecas] vayan a todos sus proyectos de biblioteca y marquen" Bibliotecas privadas de Android "como exportadas?" - está "equivocado" en la medida en que es un error, reconocido por las personas que escribieron las herramientas. "Tal vez se supone que debemos agregar los archivos jar que faltan directamente a nuestra carpeta" libs "". Ah, también debe hacerlo, como lo hizo durante el último año y cambio. Sin embargo, aún debe marcar esta casilla de verificación.
CommonsWare

99
@Phillip: AFAIK, son todos los proyectos. Más exactamente, supongo, son todos los proyectos que tienen cosas incluidas libs/, pero también puede verificarlo para todos, en caso de que agregue cosas libs/algunos meses después y se olvide de esto.
CommonsWare

10

Simplemente verificar las bibliotecas privadas de Android no fue suficiente, también tuve que instalar las herramientas de compilación del SDK de Android en el Administrador del SDK de Android.


No puedo confirmar que esto sea obligatorio, pero no superé el error que SimonSays encontró antes de instalarlo. Es posible que solo requiera la configuración adecuada de las casillas de verificación de exportación como se describe anteriormente, pero considero que debo mencionar que en el camino instalé las herramientas de compilación.
strangeluck

esto funciona para mi solo cambiar las preferencias de eclipse no es suficiente. Es posible que deba consultar las herramientas de compilación instaladas en el administrador de Android SDK.
Stevens

4

También tuve el mismo problema y mi adtera 22.0.1. Y ninguna de las soluciones anteriores funcionó. Además, al agregar un proyecto de biblioteca externa a un proyecto de trabajo, siempre verifico la gencarpeta del proyecto de trabajo y si hay Run proyecto de biblioteca externa (junto con el nombre del paquete), solo se exporta el proyecto de biblioteca externa. Y en mi gencarpeta no packagenamese mostró ninguna biblioteca externa.

Así que verifiqué el project.propertiesarchivo y no había ningún enlace de biblioteca externo android.library.reference.1=presente. Así que agregué manualmente la referencia de la biblioteca externa allí, aunque había agregado desde project->properties->Java Build Path->Projects->Add. Así que editar manualmente project.propertieshizo todo el trabajo por mí.

ingrese la descripción de la imagen aquí


1
Creo que sucedió ya que el lugar de la interfaz gráfica de usuario noandroid.library.reference.n es , sino más bien -> -> -> -> . Un Gotcha . java build pathprojectpropertiesAndroidLibraryAdd...
n611x007

4

He encontrado un problema similar, pasé aproximadamente 3 horas, pero ninguna de las decisiones propuestas aquí no ayudó ... Finalmente encontré una fuente del problema: mis archivos de proyecto y project.properties eran de solo lectura. ¡Eclipse simplemente ignora silenciosamente cualquier cambio en las dependencias de la biblioteca cuando lo hago en la GUI!


3

Yo tuve el mismo problema. Fue por el proyecto del eclipse. Para resolverlo, creé un nuevo proyecto en eclipse, copié mis clases y recursos de proyecto existentes en él y luego lancé eclipse nuevamente y agregué mis inclusiones personalizadas.


1
Demasiada molestia, la solución de CommonsWare funcionó para mí y creo que también habría funcionado para usted.
Bilthon

2

Tuve un problema similar y mi respuesta es ligeramente diferente de la de CommonsWare. Aquí está mi captura de pantalla:

ingrese la descripción de la imagen aquí

Después de verificar las bibliotecas de nuevo en mi compilación, comencé a trabajar nuevamente.


2
Tendría cuidado con esta solución. Android Dependenciesfue reemplazado por Android Private Librariesy solo podría estar allí por razones heredadas. Supongo que podría eliminarse en cualquier momento.
SimonSays

0

También tuve el mismo problema

i) agregue gson lib como referenciacend librairies
ii) verifíquelo en Java Build Path http://i.stack.imgur.com/Gldhs.png

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.