2012-03-22 3 views
7

Tengo un proyecto que hace referencia a dos proyectos de biblioteca. Después de actualizar las herramientas ADT y SDK al version 17, la aplicación falla tan pronto como llega a una referencia a una clase definida en uno de los proyectos de la Biblioteca. Los errores tales como:Herramientas SDK actualizadas y ADT a 17 y ahora obtiene VerifyErrors

Unable to resolve superclass of Lcom/my/package/name/MyActivity; (118) 
Link of class 'Lcom/my/package/name/MyActivity;' failed 
VFY: unable to find class referenced in signature (Lcom/my/package/name/MyActivity;) 

y:

FATAL EXCEPTION: main 
    java.lang.VerifyError: my/package/name/util/SomeClass 
    at my.package.name.App.onCreate(App.java:120) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3925) 
    at android.app.ActivityThread.access$1300(ActivityThread.java:122) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4340) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

(Mi paquete y las clases se no se nombran de esa manera, sólo les modificado por publicar aquí)

¿Alguna idea sobre lo que está sucediendo ¿aquí? Hasta donde puedo decir, no hay errores de compilación y mi proyecto parece que está haciendo referencia al proyecto de la biblioteca correctamente.

+0

¿Has intentado limpiar y reconstruir tus proyectos? –

+0

Me refresqué, limpié, reconstruí, cerré, abrí, lloré y un par de cosas más. ;) La limpieza no pareció cambiar nada, pero encontré algo que sí lo hizo (ver abajo). ¡Gracias! – cottonBallPaws

Respuesta

12

Tuve exactamente el mismo problema. Encontrar esta publicación: ahórreme un poco de frustración.

+0

¡Muchas gracias por ese enlace! Maldita sea, todo lo que tuve que hacer fue cambiar el nombre de la carpeta "lib" a "libs" – twig

+0

. También puedes usar la función Order and Export de eclipse. – Bendlas

4

Menos mal, eso daba miedo pero probé muchas cosas hasta que funcionó. En algún lugar dentro de todo esto, lo resolvió. Mi proyecto de biblioteca tiene un puñado de jarras agregadas a la carpeta "lib" y adjuntas a la ruta de compilación.

He leído esta nota de registro de cambios: http://tools.android.com/recent/dealingwithdependenciesinandroidprojects acerca de los cambios en las bibliotecas y dependencias. Me di cuenta de esto:

Los proyectos tienen carpetas de origen, así como el proyecto de biblioteca y las dependencias de archivos jar. Sin otra configuración necesaria de añadir proyectos de biblioteca como una dependencia en project.properties, ruta de clase de un proyecto se completa automáticamente con:

The content of the project’s libs/*.jar 
The output of the Library Projects. 
The Library Projects’ libs/*.jar 

Por alguna razón, la carpeta de mi proyecto de la biblioteca fue nombrada no "libs "lib" ". Lo he estado usando de esa manera durante casi dos años sin ningún problema, pero seguí adelante y lo cambié a "libs". Luego actualicé el proyecto, apagué el indicador "is Library" y luego lo volví a encender para asegurarme de que notó ese cambio.

Además, con las nuevas herramientas, mencionan que maneja los frascos del proyecto de la biblioteca incluidos en el proyecto que hace referencia a la biblioteca. Hasta este momento, había agregado los archivos de la biblioteca al proyecto de referencia de forma manual. Entonces ingresé al proyecto de referencia y eliminé los archivos jar de la ruta de compilación. Luego, cuando ingresé a las propiedades del proyecto, eliminé el proyecto de la biblioteca y lo volví a agregar.

Por último, noté que había un archivo jar en la carpeta del proyecto de la biblioteca, pero que no estaba siendo utilizado. Estaba solo en la carpeta. Eliminé ese archivo.

Así que en algún lugar allí comenzó a funcionar de nuevo. Imagino que la verdadera solución era cambiar "lib" por "libs", pero quería asegurarme de haberlo mencionado todo en caso de que ayudara a otros desarrolladores a experimentar miedo y pánico en sus corazones. ¡Buena suerte!

1

@kargi

Como regla general, creo que la solución here y here es una muy mala práctica. Maven resolvió este absurdo negocio de carpetas de lib hace mucho tiempo, pero Maven tampoco es muy eficiente en la construcción de Android, por lo que recomendaría utilizar la función de exportación de Eclipse, como describo en here.

Cuestiones relacionadas