Я видел немало тем, посвященных ClassNotFoundException и Android, но мне еще предстоит найти то, что, по моему мнению, является причиной того, что я испытываю.
У меня есть приложение - Виджет счетчика данных - на Android Market. У него более 250 тысяч загрузок, и каждый раз, когда я выпускаю новую версию, я получаю несколько (1-5) отчетов об ошибках об исключении ClassNotFoundException на консоль разработчика в Android Market.
29 отчетов поступают с неуказанных («ДРУГИХ») устройств. , а два - от Nexus One. Есть два пользовательских сообщения: ' Сбои при запуске »и« Во время установки обновления ».
Все отчеты относятся к моим получателям (расширяет BroadcastReceiver). Один из приемников срабатывает относительно часто, поскольку именно он запускает службу, которая считывает и сохраняет данные об использовании данных устройства Android. У меня такое ощущение, что может быть установлен сигнал тревоги (с помощью AlarmManager) для приемника, а затем пользователь / устройство обновляет приложение, а класс не найден - либо потому, что он находится в другом физическом пакете, либо потому, что это происходит момент, когда устройство выполняет обмен. Может ли это быть так? И если да, то есть ли способы обойти это? В противном случае я не могу понять, почему почти все отчеты (скажем, 90%) приходят в тот же или в следующие несколько дней после нового выпуска.
Трассировка стека для одного из моих приемников (другие дают такую же трассировку стека, кроме класса имя):
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