Android内置WebView解决方案总结

一、综述

现如今,很多应用都有内部打开网页的需求,体验上好像原生页面一样,又或者不想跳转到外部浏览器,造成用户体验上的割裂感。安卓由于碎片化太严重,导致内部集成WebView有很多坑。这里就自己在开发过程的经验做一个常用解决方案的总结。这里只是做方案的总结,分析优缺点,给还在纠结解决方案的同学一些参考。不涉及详细的集成和使用教程(我会给一些自己搜集的相关链接,不做重复劳动)。

主要有四种:

1、调用系统WebView集成

2、使用腾讯X5内核集成

3、集成Crosswalk开源Web引擎

4、使用Chrome的CustomTabs API

二、方案分析

1、系统WebView

Android中的WebView组件,在4.4以前的版本是WebKit的内核,4.4以后才换成chromium的内核,由于安卓版本碎片化太严重(安卓开发者心中永远的痛),因此也导致各个版本之间的运行效率参差不齐。而且即使是chromium内核的版本,也因为要考虑兼容以前的版本,实现上很是麻烦。而且,内存泄露问题也是很严重,网上一搜一大把。

所以,应用主要需求对webview依赖过多,对性能和兼容性要求较高的,还是不建议使用这种方案。这种方案的好处就是不会过多增加App体积,如果只是少数场景需要在内部打开网页(用户指南,用户协议之类的),不需要太多功能(不调用过多webview接口,或者只在高版本才有的API),可以考虑使用这种方案,毕竟简单方便。

优点:不增加应用体积,简单快速

缺点:版本不兼容,API上也有很多坑,运行效率参差不齐,内存泄漏问题严重

适用场景:打开简单网页,不涉及主要需求。

系统WebView使用相关的博客:Android:最全面的 Webview 详解

2、腾讯X5内核

TBS(腾讯浏览服务)的优势

1) 速度快:相比系统webview的网页打开速度有30+%的提升;

2) 省流量:使用云端优化技术使流量节省20+%;

3) 更安全:安全问题可以在24小时内修复;

4) 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;

5) 兼容好:无系统内核的碎片化问题,更少的兼容性问题;

6) 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;

7) 功能全:在Html5、ES6上有更完整支持;

8) 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;

9) 视频和文件格式的支持x5内核多于系统内核

10) 防劫持是x5内核的一大亮点

上面是官网的介绍,本来这可能是最实用的一个方案,然而还是有坑,下面会说到。

腾讯X5内核已经在腾讯家的很多产品使用,包括微信,QQ,QQ浏览器,兼容性、功能性和性能已经得到验证(兼容性才是大家关注的),而且集成也不会增加App过多体积,SDK+so库只有不到300K,打包后增加的会更少。

X5内核集成后,可以使用宿主x5内核,也就是如果手机安装了微信、QQ、QQ浏览器等包含X5内核的应用,就可以不需要在后台下载X5内核(目前官网说23M左右,wifi条件下下载),直接调用。这个还是很方便的,要知道,在大陆,微信,QQ这两个软件可是几乎都装的。当然,如果没装,在下载好X5内核之前,SDK会切换到系统WebView,不至于应用不可用。

说到坑,就是X5内核目前只提供armeabi 32位so库(没有"armeabi-v7a","arm64-v8a",更没有其他),如果你的应用需要用其他so库,就只能保留这一个文件夹,如果对性能有要求的话,这点就比较坑了。当然,如果没有性能上的需求,所有so库都只保留armeabi版本也可以的,看具体情况了。

优点:上面的“TBS(腾讯浏览服务)的优势”已经说的很全面了,另外,可以调用宿主X5内核,集成不会增加多少体积

缺点:跨平台支持较差,深入使用也会有些坑,但应付一般场景够了。

适用场景:涉及主要需求,对兼容性,功能性要求高的应用,和其他so库使用不冲突。

TBS官方接入文档:X5内核接入文档

3、Crosswalk

这个我没有实践过,要求最低版本 minSdkVersion 14。但从兼容性和功能性上说,也是个不错的选择。X5内核有的这个基本也都有,它还提供64位支持,毕竟是单独的SDK,不受安卓版本碎片化影响,所以总的来说,如果应用需求有大量复杂网页和H5,可以考虑接入。

说的那么好,为什么周围用的这么少呢?主要就是集成的体积较大,一般如果已内嵌方式集成,应用会增加20M-40M体积,对于移动应用来说是很难忍受的。很多人会说,还不如用X5呢,确实。

但Crosswalk也提供了其他集成方式:

a、使用Crosswalk Lite,它会去除一些不常用的模块 (也可以自己配置去除哪些模块),以及使用一些压缩功能,可以消减10M左右的大小。不足之处是第一次启动可能较慢(需要解压缩)。

b.使用Crosswalk 共享模式。这样应用只会包含薄薄的Crosswalk一层Wrapper。真正应用运行时,如果系统中还未安装Crosswalk,会提示在相应应用商店下载(这个在国内还是不太现实)。同时这个Crosswalk可以给不同应用共享,Crosswalk的升级更新可以和应用的更新分离。 不足之处,如果系统未安装Crosswalk shared APK,需要额外的安装过程。

优点:类似与X5内核,性能好,兼容性好,功能多,多平台支持。

缺点:集成代价较大,会增加应用过多体积。

适用场景:对性能要求很高,跨平台要求高的

Crosswalk官方文档:Crosswalk安卓设备配置

相关博客:Crosswalk 开发浅析,忘掉那些Webview的坑

4、CustomTabs

CustomTabs作为一个备用选项,因为它依赖于Chrome(准确来说是Chrome45以上版本)而且,鉴于国内的情况,手机安装Chrome的用户应该不多,不过毕竟还是有人用,中国人多嘛。不过很多比较轻或新的App都集成了(比如酷安和一些个人开发者的应用)。

这种方案,说白了就是调用Chrome的服务,所以,你不能对像集成WebView那样,做很多自定义处理,包括界面和功能。只能说是单纯的打开一个网页,功能上既然由Chrome提供技术支持,自然不缺,主要是界面和交互不能改,只能自定义标题相关属性(颜色,标题显示,图标),转场动画之类的。效果就是下面这样。

CustomTabs效果图

优点:非常方便,不需要自己解决WebView配置等问题,很多都可以共享Chrome(历史纪录,账号信息,书签等等)。

缺点:依赖Chrome,自定义性较差

使用场景:只能作为一个备用选项,仅仅内部打开外链的情况,如果可用,比自己封装的WebView可能要好用一点。

相关博客:什么是Chrome custom tabs

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容