升级Android应用程序时出现ClassNotFoundException错误报告

问题描述:

我见过很多关于ClassNotFoundException和Android的主题,但是我还没有找到我认为是我所经历的原因。升级Android应用程序时出现ClassNotFoundException错误报告

我有一个应用程序 - Data counter widget - 在Android电子市场。它有25万次下载,每次我发布一个新版本时,我都会在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

试试这个http://groups.google.com/group/android-developers/browse_thread/thread/242effaaac01463a – Akram 2012-04-25 07:03:34

经过一年左右的更新我的应用我现在明白了这个问题,并似乎有它没有解决办法:

我的应用程序(根据用户设置)使用报警管理器定期运行特定的任务。当应用程序更新时,短时间内不可用,并且如果警报触发,则会导致该特定问题!然后,该应用程序再次可用,一切正常。

因此,每次更新我的应用程序时都会定期获得此FC报告,并且没有什么可以解决的。

现在在FC报告消息中,我有时会看到'更新时崩溃'...确认它。

此外,关于向SD迁移,我明确禁止它从清单文件,但市场上的一些应用程序允许强制移动应用程序。所以如果你使用小工具或闹钟,你肯定也可以收到这样的报告!

想,这个问题是非常相似的Android app fails to load on some phones in PathClassLoader