我见过很多关于ClassNotFoundException和Android的帖子,但我还没有找到我认为是我体验的原因。
我在Android电子市场上有一个应用程序 - Data counter widget。它的下载次数为250k +,每次发布新版本时,我都会向Android Market中的开发者控制台收到一些关于ClassNotFoundException的错误报告(1-5)。
29个报告来自未指定('OTHER')设备,而其中两个来自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
答案 0 :(得分:2)
经过一年左右的时间更新我的应用程序后,我现在明白了这个问题,似乎没有解决方案:
我的应用程序(取决于用户设置)使用警报管理器定期运行特定任务。当应用程序更新时,它在短时间内不可用,如果警报触发,则会导致该特定问题!然后应用程序再次可用,一切正常。
因此,每次更新我的应用时,我都会定期收到此FC报告,并且无法完成任何操作。
现在在FC报告消息中,我有时会看到'更新时崩溃'......确认它。
关于迁移到SD,我特意将它从清单文件中删除,但市场窗台上的一些应用程序允许强制移动应用程序。因此,如果您使用小部件或警报,您也可以收到此类报告!
答案 1 :(得分:1)