在 Android 5 的 WebView 上支持 WebGL
Supporting WebGL on Android 5's WebView
我有一个 Web 项目(取决于 WebGL),可以在任何浏览器的计算机上运行。现在我正在尝试将此项目作为应用程序在基于 Android 的移动设备 phone 上打开。我使用 WebView 来完成这个。我的 phone (Nexus 3) 有 Android 4.3,正如我后来在 Android 5 之前了解到的那样,WebView 组件不支持 WebGL。从Android5开始,WebView成为依赖Chromium 37版本(可更新)的可更新独立组件,开始支持WebGL。所以我在 Android 4.3 中遇到的错误是预期的。
在此之后,我尝试使用另一个 phone(三星 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 工作正常。我有三个问题:
我好像哪里做错了,我该如何解决?
请问AndroidWebView还不支持WebGL吗,有没有办法打开依赖WebGL的应用程序?
有没有其他方法可以将 WebGL 项目作为应用程序打开。 (我已经阅读了 cordova
和 cocoon.js
但不确定是否可以通过这些来完成。)因此,如果有一个工作正常,我宁愿直接去做。
我建议你试试人行横道,基于Chromium/blink
https://crosswalk-project.org/documentation/samples/webgl.html
好吧,我想将其添加为编辑,但没有被接受,所以我添加了我的发现作为答案:
我设法让它在任何带有 Android 4+
的设备上与 CrossWalk
一起工作,android webview
与 sony xperia
phone 与 [=14] =] 就可以了。我想添加我发现的东西:
如果您想使用 android webview
,您的设备必须有 android 5+
,并且您的设备不能在 gpu_blacklist
上。我在网上找不到 gpu_blacklist
的设备列表,但有一种方法可以了解您的设备是否在 gpu_blacklist
中。打开 chrome,然后键入 chrome://gpu
,然后查看 reset notification strategy field
。如果是0x8252
那么你的设备支持webgl
,如果是0x0000
那么你的设备在黑名单中。因此,如果 android 5+
并且您的设备不在 gpu_blacklist
上,您可以将 webgl
与 android webview
一起使用。
如果您想要使用 chrome 而不是 android webview
,即使是 gpu_blacklist
上的设备,您也必须使用 chrome 版本 37+。要检查它,请打开 chrome,键入 chrome://version
。之后打开 chrome,键入 chrome://flags
,在该页面中启用 webgl
和 override software rendering list
字段。有了它,您甚至可以在 gpu_blacklist
上的设备或 android 5
以下 os 的设备上使用 webgl
。
如果您的设备不能提供上述要求,就像我的一样,您可以使用 CrossWalk
它可以工作。但是,文档组织得不好,除了它自己的文档之外,您找不到太多信息,以防万一您遇到问题。 CrossWalk
起作用的原因是当您构建 apk
文件时,您可以发送命令行参数,如 --ignore-gru-blacklist
。但是,如文档所述,如果您在 gpu_blacklist
上的设备上使用它,您的应用程序或整个设备可能会冻结。
除了 Android 5.0.1 的 Samsung s4 之外,其余所有设备 return webgl true。
- |联系 9 | Android 5.0 |网络工程 |
- |连结 6 | 5.1.1 |网络工程 |
- |宏达电 | 4.4.4 |网络工程 |
- |三星 Galaxy Note 4 | 5.0.1 |网络工程 |
- |三星s4 | 5.0.1 | webgl 不工作 |
- |三星s5 | 6.0 | webgl 有效 |
- |联系 5 | 6.0 | webgl 有效|
- |摩托X | 6.0 | webgl 有效 |
我有一个 Web 项目(取决于 WebGL),可以在任何浏览器的计算机上运行。现在我正在尝试将此项目作为应用程序在基于 Android 的移动设备 phone 上打开。我使用 WebView 来完成这个。我的 phone (Nexus 3) 有 Android 4.3,正如我后来在 Android 5 之前了解到的那样,WebView 组件不支持 WebGL。从Android5开始,WebView成为依赖Chromium 37版本(可更新)的可更新独立组件,开始支持WebGL。所以我在 Android 4.3 中遇到的错误是预期的。
在此之后,我尝试使用另一个 phone(三星 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 工作正常。我有三个问题:
我好像哪里做错了,我该如何解决?
请问AndroidWebView还不支持WebGL吗,有没有办法打开依赖WebGL的应用程序?
有没有其他方法可以将 WebGL 项目作为应用程序打开。 (我已经阅读了
cordova
和cocoon.js
但不确定是否可以通过这些来完成。)因此,如果有一个工作正常,我宁愿直接去做。
我建议你试试人行横道,基于Chromium/blink
https://crosswalk-project.org/documentation/samples/webgl.html
好吧,我想将其添加为编辑,但没有被接受,所以我添加了我的发现作为答案:
我设法让它在任何带有 Android 4+
的设备上与 CrossWalk
一起工作,android webview
与 sony xperia
phone 与 [=14] =] 就可以了。我想添加我发现的东西:
如果您想使用 android webview
,您的设备必须有 android 5+
,并且您的设备不能在 gpu_blacklist
上。我在网上找不到 gpu_blacklist
的设备列表,但有一种方法可以了解您的设备是否在 gpu_blacklist
中。打开 chrome,然后键入 chrome://gpu
,然后查看 reset notification strategy field
。如果是0x8252
那么你的设备支持webgl
,如果是0x0000
那么你的设备在黑名单中。因此,如果 android 5+
并且您的设备不在 gpu_blacklist
上,您可以将 webgl
与 android webview
一起使用。
如果您想要使用 chrome 而不是 android webview
,即使是 gpu_blacklist
上的设备,您也必须使用 chrome 版本 37+。要检查它,请打开 chrome,键入 chrome://version
。之后打开 chrome,键入 chrome://flags
,在该页面中启用 webgl
和 override software rendering list
字段。有了它,您甚至可以在 gpu_blacklist
上的设备或 android 5
以下 os 的设备上使用 webgl
。
如果您的设备不能提供上述要求,就像我的一样,您可以使用 CrossWalk
它可以工作。但是,文档组织得不好,除了它自己的文档之外,您找不到太多信息,以防万一您遇到问题。 CrossWalk
起作用的原因是当您构建 apk
文件时,您可以发送命令行参数,如 --ignore-gru-blacklist
。但是,如文档所述,如果您在 gpu_blacklist
上的设备上使用它,您的应用程序或整个设备可能会冻结。
除了 Android 5.0.1 的 Samsung s4 之外,其余所有设备 return webgl true。
- |联系 9 | Android 5.0 |网络工程 |
- |连结 6 | 5.1.1 |网络工程 |
- |宏达电 | 4.4.4 |网络工程 |
- |三星 Galaxy Note 4 | 5.0.1 |网络工程 |
- |三星s4 | 5.0.1 | webgl 不工作 |
- |三星s5 | 6.0 | webgl 有效 |
- |联系 5 | 6.0 | webgl 有效|
- |摩托X | 6.0 | webgl 有效 |