我有一个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。"不过火狐工作正常。我有三个问题:
- 我似乎做
错了什么,我该如何解决?
Android是否仍然不支持WebGL上的WebGL,是否有任何可能的方法可以打开依赖于WebGL的应用程序?
有没有其他方法可以将WebGL项目作为应用程序打开。(我已经阅读了有关
cordova
和cocoon.js
,但不确定是否可以通过这些来完成。因此,如果有一个工作正常,我宁愿直接选择它。
好吧,我想将其添加为编辑,但它没有被接受,所以我添加了我的发现作为答案:
我设法让它在任何带有Android 4+
的设备上与CrossWalk
配合使用,并使用带有android 5
的sony 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
,您可以将webgl
与 android webview
一起使用。
而不是 android webview
即使设备上有 gpu_blacklist
,您必须使用 chrome 版本 37+。要检查它,请打开 chrome,键入 chrome://version
.打开版式后,键入 chrome://flags
,在该页面中启用webgl
和override 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 |韦伯尔作品 |