Crosswalk与AssertionFailedError崩溃

mje*_*kov 8 android cordova crosswalk-project crosswalk

Crashlytics报告了以下问题,这会影响我的应用程序的很大一部分用户:

致命异常:junit.framework.AssertionFailedError:在org.xwalk.core.XWalkView.setZOrderOnTop(XWalkView.java:1271)的junit.framework.Assert.fail(Assert.java:50)xwalk准备就绪之前无法调用此方法org.crosswalk.engine.XWalkWebViewEngine.initWebViewSettings(XWalkWebViewEngine.java:193)org.crosswalk.engine.XWalkWebViewEngine.access $ 000(XWalkWebViewEngine.java:55)org.crosswalk.engine.XWalkWebViewEngine $ 2.run(XWalkWebViewEngine.java: 90)org.xwalk.core.XWalkActivityDelegate.onActivateCompleted(XWalkActivityDelegate.java:179)org.xwalk.core.XWalkLibraryLoader $ ActivateTask.onPostExecute(XWalkLibraryLoader.java:314)org.xwalk.core.XWalkLibraryLoader $ ActivateTask.onPostExecute (XWalkLibraryLoader.java:277)android.os.AsyncTask.finish(AsyncTask.java:632)在android.os.AsyncTask.access $ 600(AsyncTask.java:177)android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask) .java:645)在android.os.Looper.lo的android.os.Handler.dispatchMessage(Handler.java:102)op(Looper.java:136)位于java.lang.reflect.Method.invoke的java.lang.reflect.Method.invokeNative(Method.java)中的android.app.ActivityThread.main(ActivityThread.java:5034) .java:515)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)at dalvik.system的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602). NativeStart.main(NativeStart.java)

我刚刚添加了crosswalk作为插件,我不认为我明确地调用任何方法(在xwalk准备好之前不能调用此方法).有任何想法吗?提前致谢!

Dat*_*ang 1

我认为你正在做一些事情,XWalkView而它仍然处于未就绪状态。

onCreate()在最新版本的 Crosswalk 中,对库进行了一些更改,调用时 Crosswalk 运行时尚未加载。因此,如果您想初始化XWalkView或执行某些操作,请等待直到XWalkActivity.onXWalkReady()被调用。

解决方案是:

  • XWalkView扩展包含from的活动XWalkActivity
  • 重写XWalkActivity的方法,并对那里onXWalkReady()进行必要的初始化操作XWalkView

正如这里已经指出的: https: //crosswalk-project.org/apis/embeddingapidocs_v5/org/xwalk/core/XWalkActivity.html