Crosswalk возвращает "API Crosswalk еще не готовы" на уровне API 26
При запуске моего приложения с зависимостью XWalk (версия 23.53.589.4) у меня возникает исключение, когда я вызываю XWalk API. Вот как выглядит журнал.
java.lang.RuntimeException: Crosswalk's APIs are not ready yet
at org.xwalk.core.XWalkView.load(XWalkView.java:372)
at com.ewise.android.api.MainActivity.onXWalkInitCompleted(MainActivity.java:869)
at org.xwalk.core.XWalkInitializer$XWalkLibraryListener.onActivateCompleted(XWalkInitializer.java:264)
at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:349)
at org.xwalk.core.XWalkLibraryLoader$ActivateTask.onPostExecute(XWalkLibraryLoader.java:317)
at android.os.AsyncTask.finish(AsyncTask.java:695)
at android.os.AsyncTask.-wrap1(Unknown Source:0)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Это происходит только в Android API 26. Я пробовал это на API 27, и, кажется, работает нормально. Обратите внимание, что я уже инициализировал XWalk через XWalkInitializer заранее.
РЕДАКТИРОВАТЬ: После дальнейшего расследования, кажется, что XWalkInitializer не удается на этом этапе.
XWalkLibraryLoader.startActivate(this);
1 ответ
Добавление этого в Activity может быть полезным.
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
try{
return super.dispatchTouchEvent(event);
} catch(java.lang.RuntimeException e) {
if ( e.getMessage().compareTo("Crosswalk's APIs are not ready yet") == 0 ) {
} else {
throw e;
}
}
return false;
}