2011-04-24 16 views
8

He visto bastantes hilos sobre ClassNotFoundException y Android, pero todavía tengo que encontrar lo que creo que es el motivo de lo que experimento.Informes de error de ClassNotFoundException al actualizar la aplicación de Android

Tengo una aplicación - Data counter widget - en Android Market. Tiene más de 250k de descargas, y cada vez que lanzo una nueva versión recibo un puñado (1-5) de informes de error sobre una ClassNotFoundException en mi consola de desarrollador en Android Market.

29 informes son de dispositivos no especificados ('OTHER'), mientras que dos son del Nexus One. Hay dos mensajes de usuario: 'Fallos en el arranque' y 'Durante la instalación de la actualización'.

Todos los informes son sobre mis receptores (extiende BroadcastReceiver). Uno de los receptores se activa con relativa frecuencia, ya que es el que inicia el servicio que lee y almacena el uso de datos del dispositivo Android. Tengo la sensación de que puede ser que se configure una alarma (usando AlarmManager) para el receptor y luego el usuario/dispositivo actualice la aplicación y no se encuentre la clase, ya sea porque está en un paquete físico diferente, o porque sucede momento en que el dispositivo realiza el intercambio. ¿Podría este ser el caso? Y si es así, ¿hay alguna forma de evitarlo? De lo contrario, no puedo ver por qué casi todos los informes (digamos el 90%) se publican el mismo o el siguiente par de días después de una nueva versión.

El StackTrace para uno de mis receptores (los otros dan el mismo StackTrace que no sea el nombre de la clase):

java.lang.RuntimeException: Unable to instantiate receiver com.roysolberg.android.datacounter.receivers.CounterReceiver: java.lang.ClassNotFoundException: com.roysolberg.android.datacounter.receivers.CounterReceiver in loader dalvik.system.PathClassLoader[/data/app/com.roysolberg.android.datacounter-1.apk] 
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789) 
at android.app.ActivityThread.access$3200(ActivityThread.java:125) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.roysolberg.android.datacounter.receivers.CounterReceiver in loader dalvik.system.PathClassLoader[/data/app/com.roysolberg.android.datacounter-1.apk] 
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780) 
... 10 more 
+0

intente esto http://groups.google.com/group/android-developers/browse_thread/thread/242effaaac01463a – Akram

Respuesta

2

Después de un año o así actualizar mis aplicaciones ahora entiendo el problema y no parece haber ninguna solución a la misma:

mis aplicaciones (dependiendo de la configuración del usuario) utiliza el Administrador de alarma para ejecutar tareas específicas a intervalos regulares . Cuando se actualiza la aplicación, no está disponible durante un corto período de tiempo, y si la alarma se dispara, ¡esto causa ese problema específico! Luego, la aplicación vuelve a estar disponible y todo funciona normalmente.

Obtengo este informe FC regularmente cada vez que actualizo mis aplicaciones y no hay nada que se pueda hacer al respecto.

Ahora en los mensajes de informe de FC, a veces veo 'se colgaba durante la actualización' ... Lo confirma.

También con respecto al cambio a SD, específicamente lo evito del archivo de manifiesto, pero algunas aplicaciones en el umbral del mercado permiten forzar el movimiento de una aplicación. ¡Así que si usas widgets o alarmas, definitivamente también podrías recibir esos informes!

Cuestiones relacionadas