我们最近在我们的应用中引入了OAuth登录。这意味着使用WebView
对用户进行身份验证,然后使用AsyncTask
进行必要的REST
调用。
不幸的是,在引入此登录方法后,我们收到了关闭app力量的报告。这似乎与登录后执行的其他AsyncTask
有关,但遗憾的是,堆栈跟踪并没有告诉我们多少:
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
我们设法通过使用RoboAsyncTask(来自RoboGuice)而不是Android SDK中的AsyncTask
来修复上述错误,但我们还有其他使用WebView
的活动。 WebView
显然在其调用堆栈中的某处使用AsyncTask
,并且错误日志中已开始显示与上面显示的类似的错误(Caused by: java.lang.NoClassDefFoundError: android/os/AsyncTask
)。
错误发生在不同的设备和不同的Android版本上,没有明显的模式。我们试图自己重现错误,没有任何运气。
有什么想法吗?
答案 0 :(得分:0)
这可能是构建设置的问题。 (已知src / gen的构建顺序会导致一些问题,compat库的libs文件夹被称为lib,在新的sdk版本上给我带来了一些问题)。
看看它是否创建了一个新项目(在eclipse中,因为那是100%的android官方)。添加webview和asynctask,然后在项目中对项目执行diff。忽略src / gen / res。希望你会发现src / gen是以错误的顺序或类似的东西构建的。
〜安德斯