2011-04-24 5 views
8

ClassNotFoundException 및 Android에 대한 많은 스레드를 보았지만 경험 한 이유가 무엇인지 아직 알지 못했습니다.Android 앱을 업그레이드 할 때 ClassNotFoundException 오류 보고서가 발생했습니다.

Android 마켓에 앱이 있습니다 (Data counter widget). 그것은 250k + 다운로드를 가지고 있으며 새로운 버전을 출시 할 때마다 안드로이드 마켓의 개발자 콘솔에 ClassNotFoundException에 관한 오류 보고서가 소수 (1-5)가납니다.

29 보고서는 지정되지 않은 ('기타') 기기에서 가져온 것이고 두 개는 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

답변

2

년 후 정도 지금은 문제를 이해하고 내 응용 프로그램을 업데이트하고 그것에 어떤 솔루션 없을 것 같다 :

내 앱 (사용자 설정)에 따라 일정한 간격으로 특정 작업을 실행하기 위해 알람 관리자를 사용하여 . 앱이 업데이트되면 짧은 시간 동안 사용할 수 없으며 알람이 트리거되면 특정 문제가 발생합니다. 그런 다음 앱을 다시 사용할 수있게되고 모든 것이 정상적으로 진행됩니다.

그래서 FC 보고서를 정기적으로 업데이트 할 때마다 앱을 업데이트하고 그에 대한 작업이 없습니다.

FC 보고서 메시지에서 가끔 '업데이트하는 동안 오류가 발생했습니다'라는 메시지가 나타납니다 ... 확인합니다.

또한 SD 로의 이동과 관련하여 매니페스트 파일에서이를 막을 수 있습니다.하지만 시장에서 사용되는 일부 앱은 앱을 강제로 옮길 수 있습니다. 따라서 위젯이나 알람을 사용하면 분명히 그러한 보고서를받을 수 있습니다!

관련 문제