ClassNotFoundExceptionとAndroidについてはかなりの数のスレッドを見てきましたが、私が経験した理由が何であるかをまだ見つけていません。
私はAndroidマーケットにアプリ(データカウンターウィジェット)を持っています。ダウンロード数は25万回を超え、新しいバージョンをリリースするたびに、Androidマーケットの開発者コンソールにClassNotFoundExceptionに関するエラーレポートがいくつか(1〜5)届きます。
29件のレポートは不特定の(「その他」)デバイスからのもので、2件はNexusOneからのものです。「起動時にクラッシュする」と「アップデートのインストール中」の2つのユーザーメッセージがあります。
すべてのレポートは私の受信機に関するものです(BroadcastReceiverを拡張します)。レシーバーの1つは、Androidデバイスのデータ使用量を読み取って保存するサービスを開始するものであるため、比較的頻繁にトリガーされます。レシーバーに(AlarmManagerを使用して)アラームが設定された後、ユーザー/デバイスがアプリをアップグレードし、クラスが見つからない可能性があると感じています-物理的に異なるパッケージに含まれているため、または発生した場合デバイスがスワップを実行する瞬間。これは本当でしょうか?もしそうなら、それを回避する方法はありますか?それ以外の場合、ほとんどすべてのレポート(たとえば、90%)が新しいリリースの同じ日または次の数日で届く理由がわかりません。
私のレシーバーの1つのスタックトレース(他のレシーバーはクラス名以外に同じスタックトレースを提供します):
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