Crashlytics 报告了以下问题,该问题影响了我的应用程序的很大一部分用户:
Fatal Exception: junit.framework.AssertionFailedError: Cannot call this method before xwalk is ready at junit.framework.Assert.fail(Assert.java:50) at org.xwalk.core.XWalkView.setZOrderOnTop(XWalkView.java:1271) at org.crosswalk.engine.XWalkWebViewEngine.initWebViewSettings(XWalkWebViewEngine.java:193) at org.crosswalk.engine.XWalkWebViewEngine.access$000(XWalkWebViewEngine.java:55) at org.crosswalk.engine.XWalkWebViewEngine$2.run(XWalkWebViewEngine.java:90) at org.xwalk.core.XWalkActivityDelegate.onActivateCompleted(XWalkActivityDelegate.java:179) at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:314) at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:277) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5034) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) at dalvik.system.NativeStart.main(NativeStart.java)
我只是将 crosswalk 添加为插件,我认为我没有显式调用任何方法(在 xwalk 准备好之前不能调用此方法)。有任何想法吗?提前致谢!
最佳答案
我认为您正在对 XWalkView
执行某些操作,而它仍处于未就绪状态。
在最新版本的 Crosswalk 中,调用 onCreate()
时 Crosswalk 运行时尚未加载的库有一些变化。因此,如果您想初始化 XWalkView
或执行某些操作,请等待 XWalkActivity.onXWalkReady()
被调用。
解决方案是:
- 从
XWalkActivity
扩展包含XWalkView
的 Activity - 覆盖
XWalkActivity
的onXWalkReady()
方法,并对那里的XWalkView
做必要的初始化工作
如前所述:https://crosswalk-project.org/apis/embeddingapidocs_v5/org/xwalk/core/XWalkActivity.html
关于android - 人行横道因 AssertionFailedError 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968320/