8

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
4

2 に答える 2

2

1年ほどアプリを更新した後、問題を理解しましたが、解決策はないようです。

私のアプリ(ユーザー設定によって異なります)は、AlarmManagerを使用して特定のタスクを定期的に実行します。アプリが更新されると、短期間は利用できなくなります。アラームがトリガーされると、特定の問題が発生します。その後、アプリが再び利用可能になり、すべてが通常どおりに実行されます。

そのため、アプリを更新するたびにこのFCレポートを定期的に受け取りますが、それについてできることは何もありません。

FCレポートメッセージで、「更新中にクラッシュした」と表示されることがあります...確認します。

また、SDへの移行に関しては、マニフェストファイルからの移行を明確に禁止していますが、市場に出回っている一部のアプリでは、アプリを強制的に移行することができます。したがって、ウィジェットやアラームを使用すると、そのようなレポートを確実に受け取ることができます。

于 2012-04-25T05:17:43.413 に答える
1

この問題は、PathClassLoaderの一部の電話でAndroidアプリを読み込めないのと非常によく似ているとします。

于 2011-04-24T08:52:44.177 に答える