在Android 5的WebView

时间:2015-06-15 11:55:14

标签: java android google-chrome android-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。 `Firefox工作正常。我有三个问题:

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

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

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

3 个答案:

答案 0 :(得分:6)

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

我设法在CrossWalk的任何设备上使用Android 4+android webview使用sony xperia手机android 5。我想添加我发现的东西:

如果您想使用android webview,您的设备必须android 5+,并且您的设备不得位于gpu_blacklist。我可以在网上找到gpu_blacklist的设备列表,但有一种方法可以了解您的设备是否在gpu_blacklist。打开Chrome,然后输入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后,键入chrome://flags,在该页面中启用webgloverride software rendering list字段。有了这个,您可以webgl使用gpu_blacklist上的设备,或使用效果低于android 5的设备。{/ p>

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

答案 1 :(得分:1)

I suggest you try CrossWalk, based on Chromium/blink

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

答案 2 :(得分:1)

除了使用Android 5.0.1的三星s4,所有设备都会返回webgl为真。

  • | Nexus 9 | Android 5.0 | webgl的作品|
  • | Nexus 6 | 5.1.1 | webgl的作品|
  • | htc | 4.4.4 | webgl的作品|
  • |三星galaxy note 4 | 5.0.1 | webgl的作品|
  • |三星s4 | 5.0.1 | webgl不起作用
  • |三星s5 | 6.0 | webgl的作品|
  • | Nexus 5 | 6.0 | webgl的作品|
  • | MotoX | 6.0 | webgl的作品|