android webView 内核对比

 

现在的移动开发,一个明显的趋势是HTML占据了越来越重要的位置,H5不再是简单的一个浏览网页的行为,在非常多的APP中,它承担了许多原本许要原生开发的功能;Android的H5支持则是个比较头痛的事情

笔者在进行IOS开发时,WebView从来都不是问题,在IOS上不仅WebView统一,而且性能极佳,也很少需要考虑兼容性问题;

但这个问题在Android上则表现的非常不一样,由于机型众多,WebView的内核众多,不同手机的WebView的兼容性,性能相差也比较大,如果你的APP在Android上对H5有较高需求,你就需要一个好的解决方案

笔者现在所在的公司所负责开发的APP,就是一款企业级APP,由于需要对接企业开发的各式各样的H5的业务系统,因此在H5方面要求较高;也因此笔者对这一方面了解稍等有一点

Android WebView的选择有三种方案,分别是

  1. 使用Android系统自带的WebView
  2. 使用X5内核的WebView
  3. 使用基于chrome webkit的crosswalk WebView

如上述三种方案,第1个是最原始的解决方案,第2,3个则分别是腾讯,corsswalk的解决方案

几种方案的对照如下表:

方案 方案说明 实际效果 优缺点 html5test分数
系统自带WebView Android默认 最差 优:没有额外的JAR及负担,原生API 缺: 兼容性,性能在不同手机上显示差别很大 最差
X5 WebView 腾讯产品,微信,QQ浏览器就是使用X5内核 一般 优:提供了一个兼容性的解决方案,且微信,QQ浏览器都在用,可信度高 缺: 解决的能力一般,而且某些方面反而加大了开发工作量;而且不支持cordova 一般
crosswalk 国外为Android提供的一个融合chrome webkit的解决方案 最佳 优:没有兼容性,性能问题,且支持corodva 缺:18M的包,而且区分不同的arm,x86等CPU 较佳

笔者有一个较老的华为荣耀3C手机,购置于3年前,分别使用系统自带的WebView,X5 WebView,Crosswalk三种模式访问html5test网站,得出的评分结果分别是:

系统自带的WebView
android webView 内核对比_第1张图片

X5内核WebView
android webView 内核对比_第2张图片

Crosswalk WebView
android webView 内核对比_第3张图片

如上所述,crosswalk的效果是显而易见;笔者所有公司的APP项目也是使用crosswalk做为Android WebView

  1. 使用Chrome Webkit内核,兼容性不存在任何问题
  2. 性能佳
  3. 支持cordova
  4. 支持前端人员可以在PC Chrome上联调

不足:

  1. APP包增加了至少18M
  2. 不同的CPU系统的包完全不同,笔者APP只支持arm,如果你还要支持X86 CPU,你还得加18M的大小,或者分2个APP

而X5做为腾讯的一款产品,主要目标也是解决兼容性问题,从分数上看,它在H5的支持度上并没有太多的改善;但兼容性方面应该有比较好的改善,同时有微信和QQ浏览器做支撑,也是一个比较好的选择

因此,笔者最终建议如下:

  1. 你的APP对WebView需求不高,以纯原生为主,那就不用考虑WebView的兼容性及性能问题,使用系统自带的WebView就可以了
  2. 如果你的APP有大量使用到WebView,加载一些H5网页,但在cordova等其它方面没有要求,使用X5是一个比较好的选择,毕竟腾讯的实力摆在那,有问题你可以说,微信也是这样的(这个话非常有杀伤力)
  3. 类似笔者公司这样的APP,对H5有非常高的要求,大量的业务系统是由H5完成,且需要cordova与原生进行大量的交互 ,那这种情况下,crosswalk是我们唯一的选择,虽然加大了18M,但带来的好处是显而易见的

笔者公开了博文所涉及到的测试APP,你可以下载源码或APK,一方面了解这三种WebView应该如何使用,另一方面可以在不同的手机上进一步验证它们的兼容性及性能问题

访问源码

下载APK

源码是基于Android Studio运行,笔者认为你应该会用这个开发工具了

实际上,Android 4.4后,Android WebView就已经是基于WebKit内核了,理论上随着版本的不断发展,原生WebView性能及兼容性会越来越好;某个时间后,原生WebView就是最佳的选择了

但现在你还是要考虑这个问题

 

你可能感兴趣的:(android)