6

我在本教程中将 Crosswalk 添加到 Eclipse:ClickHere 我按照教程中的方式完成了所有操作,并且没有出现任何错误,但是当我在手机上启动应用程序时,我得到了这个:

02-19 13:37:08.147: E/AndroidRuntime(21108): FATAL EXCEPTION: main
02-19 13:37:08.147: E/AndroidRuntime(21108): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.crosswalktest/com.example.crosswalktest.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class org.xwalk.core.XWalkView
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread.access$700(ActivityThread.java:134)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.os.Looper.loop(Looper.java:137)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread.main(ActivityThread.java:4867)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at java.lang.reflect.Method.invokeNative(Native Method)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at java.lang.reflect.Method.invoke(Method.java:511)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at dalvik.system.NativeStart.main(Native Method)
02-19 13:37:08.147: E/AndroidRuntime(21108): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class org.xwalk.core.XWalkView
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.createView(LayoutInflater.java:613)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:316)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.Activity.setContentView(Activity.java:1901)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at com.example.crosswalktest.MainActivity.onCreate(MainActivity.java:17)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.Activity.performCreate(Activity.java:5047)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
02-19 13:37:08.147: E/AndroidRuntime(21108):    ... 11 more
02-19 13:37:08.147: E/AndroidRuntime(21108): Caused by: java.lang.reflect.InvocationTargetException
02-19 13:37:08.147: E/AndroidRuntime(21108):    at java.lang.reflect.Constructor.constructNative(Native Method)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at android.view.LayoutInflater.createView(LayoutInflater.java:587)
02-19 13:37:08.147: E/AndroidRuntime(21108):    ... 21 more
02-19 13:37:08.147: E/AndroidRuntime(21108): Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Use SharedXWalkView if you want to support shared mode
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper.handleException(ReflectionHelper.java:233)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper.handleException(ReflectionHelper.java:237)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper.init(ReflectionHelper.java:132)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper.loadClass(ReflectionHelper.java:199)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper$ConstructorHelper.loadConstructor(ReflectionHelper.java:37)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.ReflectionHelper.createInstance(ReflectionHelper.java:246)
02-19 13:37:08.147: E/AndroidRuntime(21108):    at org.xwalk.core.XWalkView.<init>(XWalkView.java:169)
02-19 13:37:08.147: E/AndroidRuntime(21108):    ... 24 more
02-19 13:37:08.147: E/AndroidRuntime(21108): Caused by: java.lang.RuntimeException: Use SharedXWalkView if you want to support shared mode
02-19 13:37:08.147: E/AndroidRuntime(21108):    ... 30 more

主要活动:

public class MainActivity extends Activity {

private  XWalkView mXWalkView;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mXWalkView = (XWalkView) findViewById(R.id.AM);
    mXWalkView.load("http://crosswalk-project.org/", null);
  }

}

活动主.xml:

<org.xwalk.core.XWalkView android:id="@+id/AM"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
</org.xwalk.core.XWalkView>

我挖了谷歌几个小时,但找不到解决方案。

4

5 回答 5

6

我遇到了同样的问题并找到了解决方案:

请记住在您的 Android 清单中请求所需的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
于 2015-10-30T09:44:52.990 回答
1

尝试将 crosswalk-webview-14.43.343.11-arm(或您正在使用的任何更新的库)作为库项目导入 eclipse 或 android studio。这将解决问题。将其作为库添加到您的项目中。在eclipse中:右键单击项目->属性->添加库。

在 Android Studio 中:打开项目的模块设置->按 + 按钮导入项目->添加您的 crosswalk-webview-14.43.343.11-arm。之后在您的项目中添加模块依赖项。

在某些情况下,简单地引用 jar 是行不通的。

于 2015-07-16T14:59:48.840 回答
0

对我来说,诀窍是下载Android Arm+x86 版本,其他两个版本似乎不起作用。

于 2015-07-01T12:23:43.337 回答
0

就像开发者说的,jar 文件是不够的,它不是一个包含所有内容的超级 jar

作为模块:

  • 复制项目文件夹中的源文件
  • 包含模块:文件->新建->新建模块
  • 将新模块添加到您的应用程序模块(右键单击应用程序 -> 依赖项 -> + -> 模块依赖项
于 2016-07-13T14:03:48.357 回答
0

在将人行横道嵌入到我们基于 gradle 的项目中时,我遇到了类似的问题。它只发生在发布版本中。在尝试从 XWalkActivity 扩展或使用 XWalkInitializer 后它仍然失败,但我注意到它在基于反射的方法期间失败,当应用程序尝试初始化嵌入库时。然后我明白这是由我们发布版本中的proguard中的方法混淆引起的。根据Crosswalk FAQ在 proguard 配置中添加异常,然后在 proguard 中添加另一条规则以保持我们项目中使用的 JavasriptInterface 方法在 webview 和本地客户端之间进行交互,问题得到修复。所以我建议检查你的proguard规则(如果有的话)。

于 2016-10-26T10:17:27.793 回答