在Android 5的WebView上支持WebGL



我有一个Web项目(依赖于WebGL),它可以在计算机上工作,任何浏览器。现在我正在尝试将这个项目作为基于Android的手机上的应用程序打开。我使用WebView来完成此操作。我的手机(Nexus 3)有Android 4.3,正如我在Android 5之前了解到的那样,WebView组件不支持WebGL。在Android 5中,WebView成为一个可更新的独立组件,依赖于Chromium版本37(可以更新),并开始支持WebGL。因此,我在Android 4.3上遇到的错误是意料之中的。

在此之后,我尝试使用另一部手机(三星Galaxy S4,上面有Android 5和Chrome版本43)。因此,该应用程序应该运行良好,但在WebView上仍然出现错误。我尝试 get.webgl.org 仍然相同的错误:

Error constructing CesiumWidget.
Visit http://get.webgl.org to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers.

详细的错误信息如下:

RuntimeError: The browser supports WebGL, but initialization failed.

错误

at new RuntimeError (http://192.168.43.125:8090/TMAPW/lib/Cesium/Build/CesiumUnminified/Cesium.js:10657:19)
at new Context (http://192.168.43.125:8090/TMAPW/lib/Cesium/Build/CesiumUnminified/Cesium.js:96489:19)
at new Scene (http://192.168.43.125:8090/TMAPW/lib/Cesium/Build/CesiumUnminified/Cesium.js:120928:23)
at new CesiumWidget (http://192.168.43.125:8090/TMAPW/lib/Cesium/Build/CesiumUnminified/Cesium.js:130986:25)
at AMouseListener.Map2D.initWidget 

这似乎仍然是一个配置问题,所以然后我尝试在 Chrome 上而不是在 WebView 上打开它,但仍然出现相同的错误。我按照指示在Chrome上启用了WebGL。"不过火狐工作正常。我有三个问题:

    我似乎做
  1. 错了什么,我该如何解决?

  2. Android是否仍然不支持WebGL上的WebGL,是否有任何可能的方法可以打开依赖于WebGL的应用程序?

  3. 有没有其他方法可以将WebGL项目作为应用程序打开。(我已经阅读了有关cordovacocoon.js,但不确定是否可以通过这些来完成。因此,如果有一个工作正常,我宁愿直接选择它。

好吧,我想将其添加为编辑,但它没有被接受,所以我添加了我的发现作为答案:

我设法让它在任何带有Android 4+的设备上与CrossWalk配合使用,并使用带有android 5sony xperia手机android webview。我想添加我发现的东西:

如果要使用 android webview ,您的设备必须具有android 5+,并且您的设备不得处于gpu_blacklist 上。我找不到网络上gpu_blacklist的设备列表,但是有一种方法可以了解您的设备是否在gpu_blacklist中。打开镶边,然后键入 chrome://gpu ,然后查看reset notification strategy field 。如果是0x8252则您的设备支持webgl,如果0x0000则您的设备在黑名单中。因此,在android 5+并且您的设备不在gpu_blacklist ,您可以将webglandroid webview 一起使用。

如果您想使用 chrome

而不是 android webview 即使设备上有 gpu_blacklist ,您必须使用 chrome 版本 37+。要检查它,请打开 chrome,键入 chrome://version .打开版式后,键入 chrome://flags ,在该页面中启用webgloverride software rendering list字段。有了它,您甚至可以使用webgl,甚至可以与gpu_blacklist上的设备或操作系统低于android 5的设备一起使用。

如果您的设备无法像我一样提供上述要求,您可以使用它CrossWalk工作。但是,文档组织得不好,除了它自己的文档之外,您找不到太多信息,以防您遇到问题。CrossWalk工作的原因是,当您构建apk文件时,您可以发送命令行参数,例如 --ignore-gru-blacklist .但是,正如文档所述,如果您在gpu_blacklist上的设备上使用它,您的应用程序或整个设备可能会冻结。

我建议你尝试CrossWalk,基于Chromium/blink

https://crosswalk-project.org/documentation/samples/webgl.html

除了三星s4和Android 5.0.1,其余所有设备都返回webgl true。

  • |连结 9 |安卓 5.0 |韦伯尔作品 |
  • |连结 6 |5.1.1 |韦伯尔作品 |
  • |
  • HTC | 4.4.4 | WebGL作品 |
  • |
  • 三星 Galaxy Note 4 | 5.0.1 | WebGL 作品 |
  • |
  • 三星 S4 | 5.0.1 | WebGL 不起作用 |
  • |
  • 三星 S5 | 6.0 | WebGL 作品 |
  • |连结 5 |6.0 |韦伯格作品|
  • |摩托 |6.0 |韦伯尔作品 |

最新更新