首页 文章

在Android 5的WebView上支持WebGL

提问于
浏览
1

我有一个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工作正常 . 我有三个问题:

  • 似乎有什么我做错了,我该怎么办呢?

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

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

3 回答

  • 1

    我建议您尝试使用基于Chromium / blink的CrossWalk

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

  • 1

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

    我设法在 CrossWalk 上使用 CrossWalk 并使用带有 android 5sony xperiaandroid webview . 我想添加我发现的东西:

    如果您想使用 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 上的设备,也可以使用os低于 android 5 的设备 .

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

  • 5

    除了三星s4与Android 5.0.1,休息所有设备返回webgl true .

    • | 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的作品|

相关问题