1

我们最近在我们的应用程序中引入了 OAuth 登录。这意味着使用 aWebView对用户进行身份验证,然后使用 aAsyncTask进行必要的REST调用。

不幸的是,在引入这种登录方法后,我们收到了应用程序强制关闭的报告。这似乎与AsyncTask登录后执行的其他 s 有关,但不幸的是堆栈跟踪并没有告诉我们太多:

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,但我们还有其他使用WebViews. WebView显然AsyncTask在其调用堆栈中的某处使用,并且与上面显示的错误(Caused by: java.lang.NoClassDefFoundError: android/os/AsyncTask)类似的错误已开始显示在我们的错误日志中。

该错误发生在不同的设备和不同的 Android 版本上,没有明显的模式。我们试图自己重现错误,但没有任何运气。

有任何想法吗?

4

1 回答 1

0

这可能是构建设置的问题。(已知 src/gen 的构建顺序会导致一些问题,被称为 lib 的兼容库的 libs 文件夹在新的 sdk 版本上对我造成了一些问题)。

看看它是否创建了一个新项目(在 eclipse 中,因为那是 100% android 官方的)。添加一个 webview 和一个 asynctask,然后用你的项目对项目进行比较。忽略 src/gen/res。希望您会发现 src/gen 的构建顺序错误或类似的东西。

~ 安德斯

于 2012-12-11T07:40:33.370 回答