2012-12-07 7 views
1

우리는 최근에 우리의 애플 리케이션에 OAuth 로그인을 도입했습니다. 즉, 사용자를 인증하는 데 WebView을 사용하고 나중에 REST을 호출하려면 AsyncTask을 사용합니다.앱 강제 종료 java.lang.NoClassDefFoundError : android/os/AsyncTask

이 로그인 방법을 소개 한 후 앱 강제 종료에 대한 신고가 접수되었습니다. 이 로그인 후에 실행되는 다른 AsyncTask의 관련이있는 것으로 보이지만, 스택 트레이스는 불행하게도 많이 알려하지 않습니다 우리는 (RoboGuice에서) RoboAsyncTask를 사용하여 위의 오류를 해결하기 위해 관리

java.lang.IllegalStateException: Could not execute method of the activity 
at android.view.View$1.onClick(View.java:3100) 
at android.view.View.performClick(View.java:3627) 
at android.view.View$PerformClick.run(View.java:14329) 
at android.os.Handler.handleCallback(Handler.java:605) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4511) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at android.view.View$1.onClick(View.java:3095) 
... 11 more 
Caused by: java.lang.NoClassDefFoundError: android/os/AsyncTask 
at com.foo.bar.TransmissionActivity.transmit(TransmissionActivity.java:44) 
... 14 more 

대신 Android SDK의 AsyncTask이지만 다른 활동은 WebView입니다. WebView은 분명히 호출 스택의 어딘가에서 AsyncTask을 사용하며 위에 표시된 것과 비슷한 오류 (Caused by: java.lang.NoClassDefFoundError: android/os/AsyncTask)가 오류 로그에 표시되기 시작했습니다.

오류는 다른 기기와 다른 Android 버전에서 명백한 패턴없이 발생합니다. 우리는 행운없이 오류를 스스로 재현하려고 노력했습니다.

아이디어가 있으십니까?

+1

잘못된 시간과 장소에서 작업을 만들 때 비슷한 문제가있었습니다. AsyncTask로 코드 예제를 보여줄 수 있습니까? – RagnarR

답변

0

빌드 설정에 문제가있을 수 있습니다. src/gen의 빌드 순서에 따라 몇 가지 문제가 발생하는 것으로 알려져 있습니다. lib라고 불리는 compat 라이브러리의 libs 폴더가 새로운 sdk 버전에서 나에게 약간의 문제를 일으켰습니다.

새 프로젝트를 만들지 보려면 (이클립스에서는 100 % android official 임). webview와 asynctask를 추가 한 다음 프로젝트와 함께 프로젝트에서 diff 작업을 수행하십시오. src/gen/res를 무시합니다. 다행스럽게도 src/gen은 잘못된 순서 또는 이와 유사한 방식으로 빌드됨을 알 수 있습니다.

~ Anders