Android系统中的webview包括系统webview和x5
Android系统webview
系统webview,是默认的webview,及Google的Androidsystemwebview,它自带于手机rom中,所有依赖系统webview的应用都调用这个webview。
在Android4.4以前,webview是Androidwebkit浏览器内核,很多HTML5标准语法不支持,比如indexeddb、webgl等,canvas性能也非常差。Android4.4起,变成了chromium内核,内核版本是chrome30,性能和现代语法支持大幅提升。从Android5开始,webview脱离rom可单独更新,伴随着chrome的发版,google会在googleplaystore上同步更新Androidsystemwebview。
由于googleplaystore被墙,国内用户可通过华为应用市场的镜像下载安装最新版Androidsystemwebview。也有个别国产rom改坏了这块的机制,使得自身的systemwebview无法独立安装升级。
目前国内的Android5以上手机webview版本差异很大,从chrome37一直跨度到60,手机用户侧使用了到底是哪个版本是不一定的。所以HBuilder的开发者需要注意,尽量不要使用chrome40以后的新增的语法,使用普通常规的写法完成业务开发。
关于如何查看Android手机端webview的版本:
1.日志里查ua
2.在系统设置里找到所有应用,显示隐藏系统进程,在里面找到Androidsystemwebview,显示的版本即为chrome版本。
Android手机默认浏览器和webview的区别:
国外品牌的安卓手机,自带浏览器就是chrome。而国内安卓手机,自带浏览器大多是QQ浏览器、UC浏览器的贴牌,极个别是自己改造chromium。所以手机自带的浏览器并不等于webview,在一个平台可运行,不代表另一个平台可兼容。
QQ、UC、等浏览器也基本是基于chromium做改造,不同版本的浏览器其使用的chromium内核版本也不一样。具体可以打印ua查看。
注意夜神等安卓模拟器的Android版本是4.4,很多新语法都不支持。
如果你有影响用户的能力,为了给用户更好的体验,可以引导Android用户安装最新版Androidsystemwebview。应用宝、华为、金立等应用市场均可下载这个apk,或者翻墙到googleplaystore。
在华为、小米、金立手机上,wifi下会自动更新Androidsystemwebview。尤其是有些Android5用户使用的Androidsystemwebview37版本,有硬件加速bug,闪屏花屏,此时升级webview即可解决。
有人问可否在打包时直接集成新版Androidsystemwebview,减少浏览器兼容问题?
webview体积至少50M起,体积实在太大了。有兴趣的开发者可以自己研究离线打包。倒是可以这样:js里判断当前手机是Android5以上,且webview版本过低,比如低于40(ua可以判断),可以提醒用户是否升级webview,然后引导用户去之前贴出的地址下载更新webview。但不管怎么样,尽量少写可能遇到兼容性问题的代码。
AndroidApp也可以使用x5webview
各小程序平台的webview内核说明
各家小程序,在iOS上大多使用的是wkwebview内核,已知仅百度小程序是uiwebview。wkwebview是iOS的一部分,其版本根据iOS版本的不同而不同。可以在caniuse直接看到iOS版本对应的浏览器兼容问题。
Android上各家小程序使用的是基于chromium改造的浏览器内核。具体如下: