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

Roy*_*erg 8 java android classnotfoundexception

我已经看过很多关于ClassNotFoundException和Android的帖子,但是我还没有找到我认为是我体验的原因.

我在Android电子市场上有一个应用程序 - 数据计数器小部件.它有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
Run Code Online (Sandbox Code Playgroud)

3c7*_*c71 2

经过一年左右的更新我的应用程序后,我现在了解了这个问题,但似乎没有解决方案:

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

因此,每次更新应用程序时,我都会定期收到此 FC 报告,但对此无能为力。

现在,在 FC 报告消息中,我有时会看到“更新时崩溃”...证实了这一点。

另外,关于迁移到 SD,我特意从清单文件中阻止了它,但市场上的某些应用程序仍然允许强制移动应用程序。因此,如果您使用小部件或警报,您也肯定会收到此类报告!