【问题标题】:Crosswalk with Eclipse crashes人行横道与 Eclipse 崩溃
【发布时间】:2015-02-19 12:45:32
【问题描述】:

我在本教程中将 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);
  }

}

activity_main.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>

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

【问题讨论】:

  • android:layout_height="fill_parent" android:visibility="visible" tools:context=".MainActivity"> ???
  • 您找到解决方案了吗?我在 Android Studio 中遇到了同样的问题。我正在使用本机库的 ARM 版本。 SharedXWalkView 到底是什么?我在互联网上根本看不到它的任何文档,甚至在 crosswalk-project.org 上也没有。记录不充分的开源 /facepalm
  • 你找到解决方案了吗,如果是,请分享..
  • 同样的错误,还有解决办法吗?
  • @SomeoneSomewhere 这就是我提醒同事不要使用这个 POS 框架的原因。没有它真的很难使用它。我对 POS 感到非常抱歉,但确实如此。你去吧,我说过了。

标签: android eclipse crosswalk-runtime


【解决方案1】:

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

记得在您的 Android Manifest 中请求所需的权限:

<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" />

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        作为模块:

        • 复制项目文件夹中的源文件
        • 包含模块:文件->新建->新建模块
        • 将新模块添加到您的应用程序模块(右键单击应用程序 -> 依赖项 -> + -> 模块依赖项

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-03-16
            • 1970-01-01
            • 1970-01-01
            • 2016-02-08
            • 1970-01-01
            相关资源
            最近更新 更多