小龙哥
小龙哥
  • 发布:2015-08-12 18:54
  • 更新:2018-04-11 18:41
  • 阅读:8960

【重点讨论】优化Webview性能迫在眉睫

分类:5+ SDK

安卓Webview性能太差了,特别是在低端手机,渲染很差劲。如果这个问题解决了Hbuilder就无敌了。
希望可以考虑一下腾讯X5内核的Webview。
腾讯X5作为Android webview的优化,在很多性能上,的确改良了不少,但是对于h5的支持,我不得不在这里吐槽一下,为什么把大名鼎鼎的WebSocket给屏蔽没了,很是忧伤。

腾讯x5内核sdk:http://x5.tencent.com/
DebugGap调试腾讯X5内核webview:http://blog.csdn.net/liangmapi/article/details/43670315

如果还有其它的webview内核,欢迎大家跟贴讨论。

2015-08-12 18:54 1 条评论 分享
已邀请:

最佳回复

DCloud_heavensoft

DCloud_heavensoft

此问题是因为Android5初期的一批设备的webview有bug而造成阶段性问题。目前此问题已过期。在在nview和UniApp的加持下,性能问题已得到解决。无需引入三方webkit内核。问题关闭。
之前的回复如下:


虽然可以引入三方浏览器引擎,但对于我们而言,还是需要保证在os的webview下也没有问题。之后才会考虑引入三方引擎。
目前在android5上的问题,大部分已经解决,其他问题还在努力中。
至于低版本android上的问题,主要是浏览器兼容性问题,注意一下代码就可以避开。

在现有的webview上解决问题,是为了追求极致的大App开发商,他们不在意代码编写要多注意点什么,但非常在乎包的体积。引入三方引擎会增大数M的包体积,无法满足这些厂商的需求。比如目前360手机助手内置了5+ sdk,如果他们不会接受包体积变大数M;
而集成三方引擎比如crosswalk是为了图省事的开发者,比如很多toB的App,不那么在乎包体积,但希望开发方面快速。后记:crosswalk已经停止维护,intel已经放弃这个产品了,无需研究如何集成crosswalk了

  • wenju

    如果引入包增大体积 性能更好更稳定 开放简单快速 大家肯定喜欢呐 写代码的可是我们这些苦逼的程序猿 赶工期 赶发项目 如果问题一大堆的框架谁也不大喜欢用的 浏览器兼容性的问题注意一下代码 额 我等小白看来还得继续走弯路了 ~~(>_<)~~

    2015-08-18 09:00

  • 我的一沓

    看到“大APP开发商”我就Orz了,唉

    2016-06-29 16:49

chender

chender - 与人为善

@DCloud_heavensoft
王总,个人觉得,引入了第三方浏览器引擎后,”保证在os的webview下也没有问题“ 这件事情就没什么意义了吧;
webview的问题真的蛮多的,很多我都没有提,比如类似在a页面不引入mui.css会导致,a页面中打开的b页面出现闪屏这种诡异问题我都没提,一是之前的一些问题都还没解决,二是重现的环境比较复杂,没时间整理demo;
如果只是按照官方的demo什么的,做做简单的功能,相信官方要不了多少时间就能把大的问题解决了,满足用户的需求;
但是程序猿的智慧是无穷无尽的,如果用的人越来越多,使用方式错综复杂,那后期问题肯定会更多的;
官方android组的能力我不怀疑,但是有些事情真的不是程序猿能解决的,一个产品的成功,程序员占不了50%的权重,作为团队领导而言,压力固然是大的,但是不能因为惯性(惰性)而不舍得进行调整,作为创业公司,很少有一蹴而就的,走过弯路才算是正常的(我自己这边喝着西北风走过不少弯路,感觉这次又有点弯了。。);
忠言利耳利于行,算是建议,也算是感慨;

  • DCloud_heavensoft

    之前的观点未说透,原因我已经修改了之前的答案。系统webview和三方引擎的优劣都分析了。

    2015-08-18 06:35

小龙哥

小龙哥 (作者)

@DCloud_heavensoft
王总,安卓自带的webview错众复杂,乱象丛生,安卓4.4.x有些手机上也惨不忍睹。我的手机安卓4.2.x系统也有很多小问题,比如:二个webview隔久了没动手机,划动子webview父webview会白屏,还有原生的webview的canvas动画很卡但是x5内核很流畅,还用很多很多小问题。有些问题还不仅仅跟手机低端有关系,还跟手机自带的webview有关系。增在数M真的没关系,只要能运行流畅,现在一个app几十M也很正常,wifi和4G网络那么快,还在乎那几M吗?

DCloud这套系统的架构很好,每个页面单独用webview很先进,之前我用appcan的时候,虽然毛病一大堆都懒得提修改意见,因为知道他们那种架构注定没有什么希望,只能做做简单的app,但是DCloud不同,这种架构让我看到了H5替代原生的希望。

对于优化webview或者引入x5内核的问题上,希望官方可以三思,如果其它公司率先优化webview,将对DCloud是毁灭性的打击,哪怕其它方面的功能弱一些。

  • 枫桥居APP

    360是不会用x5的,因为x5是腾讯的,360又和腾讯有矛盾,360又是hb的大客户,所以hb也不敢花太多精力集成x5,这种错综复杂的关系

    2015-08-19 10:51

bober

bober

也是挺难为HBuilder的了,国产开源第一啊!!!
自从接触到Hbuilder后,开发工具就抛弃其他的了,Hybrid也抛弃其他的了!!

不过,还是有太多人希望引入第三方引擎,即使包增加几个M,也可以接受。

“追求极致的大App开发商” 他们应该没有勇气用hybrid,尤其需要适合众多机型时!
与其卡在性能上,还不如引入一款靠谱的第三方引擎,提升性能!

当性能相差不太大时,在开发速度和灵活上占明显优势的hybrid想必会非常受欢迎吧!!(纯属个人主见)

虽然,引入第三方包会增加体积,可是相比性能和开发速度、灵活度上,相信那些“追求极致的大App开发商”会做出取舍吧!!

毕竟,开发效率、成本都在这里摆着!

chender

chender - 与人为善

不一定要用x5,如果人手不够就基于Webkit自己稍微二次优化一下,这样起码内核版本可以统一,问题就会少很多了

running

running - 生命不息,折腾不止

所以希望出几个版本,比如用户可以自主选择是否把crosswalk打包进入内核,让用户来选择

蔡繁荣

蔡繁荣 - 发表是最好的记忆

+1,迫在眉睫!建议直接把腾讯X5的人挖过来

  • 小龙哥 (作者)

    腾讯X5已经开放了sdk,安卓直接调用就行了,就是不知道官方集成打包方不方便。

    2015-08-13 09:15

迷你云

迷你云

很是需要,+1

wenju

wenju - http://www.mescroll.com -- 精致的下拉刷新和上拉加载js框架. 主流APP案例, 一套代码多端运行~ 问题咨询请发私信哈~

急需哇 闪得眼睛都花了 挨批啊 老板说花差不多一个月整个不如原生的玩意~~(>_<)~~忧伤...

  • 蔡繁荣

    默哀~~~

    2015-08-12 20:32

  • wenju

    回复 蔡繁荣:~~(>_<)哇~~~(@ο@)

    2015-08-12 20:34

  • 蔡繁荣

    回复 wenju:你不是在弄原生调用H5+吗?

    2015-08-12 20:34

  • 蔡繁荣

    回复 wenju:你是因为什么被老板批?触摸瞬间闪屏吗?还是切换webview闪烁?

    2015-08-12 20:36

  • 尘岳two

    肯定不如原生啊

    2015-08-13 08:55

  • wenju

    回复 蔡繁荣:是原生集成h5呢 就是有些手机闪 触摸闪 切换也闪 我也搞不懂 问题在哪 大部分手机又正常 反正好麻烦~~(>_<)~~早知都用原生写好了

    2015-08-13 08:56

  • wenju

    回复 尘岳two:腾讯x5内核..这个感觉好高大上 第一次接触 虽然不知道啥 先收藏 以后再瞧瞧

    2015-08-13 09:00

  • 小龙哥 (作者)

    同样的情况,安卓手机太多,大部分没问题,但总有一些手机会卡顿,人家的手机也不便宜,1400左右,经过我的多次优化测试,发现是渲染环节卡,所以才建议官方考虑其它的webview内核。

    2015-08-13 09:16

  • 蔡繁荣

    回复 小龙哥: 闪烁就是webview渲染导致,有待优化,是最大的bug

    2015-08-13 11:10

  • 只为你搁浅

    回复 蔡繁荣:希望集成x5引擎能友好的解决闪烁的问题,还有google的v8,站在巨人的肩上

    2015-08-14 15:24

  • 只为你搁浅

    还有intel crosswalk

    2015-08-14 15:25

小龙哥

小龙哥 (作者)

原生的开发太慢了,如果Hbuilder团队把这个问题解决了,那很多原生的都会转h5

小龙哥

小龙哥 (作者)

希望官方能够重视起来,其它的真的很完美的。

叶孤村

叶孤村

强烈支持,+1

liangyue

liangyue

表示关注

只为你搁浅

只为你搁浅

强势围观,支持 +1
还有webview的动画也没有想象中那么流畅

小龙哥

小龙哥 (作者)

@只为你搁浅 腾讯X5内核webview的H5动画比原生的快10倍

  • 蔡繁荣

    表示怀疑,吹的水份很多

    2015-08-14 16:11

小龙哥

小龙哥 (作者)

@蔡繁荣

自己看嘛
http://v.qq.com/iframe/player.html?vid=t01437zdq5x&tiny=0

FPS 1:10
腾讯X5 60+的FPS接近原生的啦!

  • 蔡繁荣

    看起来很屌的样子

    2015-08-14 16:45

x007xyz

x007xyz - 学习当中

是啊,效率和机制存在问题。

移动app忠实者

移动app忠实者

这个确实很好

小迟

小迟

支持啊

枫桥居APP

枫桥居APP

其实自己可以优化的,具体的看我下一版本的枫桥居app吧

  • x007xyz

    枫桥居的效果还是蛮流畅的,我的页面结构比较复杂,滑动就卡的不行了。这个具体怎么优化啊!

    2015-08-15 09:37

  • 小龙哥 (作者)

    自己优化webview ?

    2015-08-15 10:00

  • 枫桥居APP

    回复 小龙哥:新版枫桥居页面结构也很复杂,类似微信架构了,加好友,聊天,通知,商场等。反正得自己优化,如果等官方是不现实的,官方不可能针对我们的业务去优化的,他们只提供一个框架。

    2015-08-16 11:07

  • itgenius

    你的下一版本什么时候发布?欣赏下

    2015-08-16 13:28

  • hilongjw

    赞一个,期待跟我们分享一下

    2015-08-17 11:23

  • 我的一沓

    刚安装了2.6.4版本,感觉像是没有开启硬件加速的样子,手机系统是MIUI8开发版 Android 5.0.2

    2016-06-29 16:28

玄凌

玄凌

赞同!!!希望可以做进去

chender

chender - 与人为善

现在一个界面数据量稍微有点大,拖动起来就会有明显的抖动;
官方的demo也一样;
就是那个chat页面,有四五十条数据后,锤子手机上拖动起来都会抖

小龙哥

小龙哥 (作者)

@枫桥 自己优化webview ?

蔡繁荣

蔡繁荣 - 发表是最好的记忆

新版本Android优化了什么呢?
indexed list 索引列表,无论如何快速滑动,都不会出现白块。
但是iOS还是会出现白块!
Android性能竟然比iOS还高?感觉iOS快速拖动白块问题(渲染问题)看到了希望

  • chender

    之前出现白块是因为那个滚动是div的滚动吧,不是原生的

    2015-08-15 13:47

  • 蔡繁荣

    回复 chender:Android下div的滚动不会出现白块,反而iOS下div会出现白块?不是吧?不能啊

    2015-08-16 17:56

  • chender

    android下有些手机拖动也会出现白块的,特别是数据量比较大的时候,我自己改造了一下,改成原生的滚动了

    2015-08-16 17:58

蔡繁荣

蔡繁荣 - 发表是最好的记忆

@chender Hello mui的示例城市索引列表是整个文档的拖动,不是div的。快速拖动Android平台不会出现白块,而iOS平台会出现白块。

chender

chender - 与人为善

@蔡繁荣 你说的就是机场列表,右侧带abcd那个吧,那个不是原生的滚动,你可以看一下dom结构,或者打印一下document.body的高度

  • 蔡繁荣

    document.body高度是说明?

    2015-08-15 19:38

  • chender

    那个列表里面好像不管内容多少时,document.body的高度都只有几百,说明滚动条是内部的滚动天,不是原生的,哈哈,我是这么理解的,不知道对不对

    2015-08-15 19:58

枫桥居APP

枫桥居APP

每次这么关键(革命性)的话题,官方人员都装死中,只留下我们这群小白在讨论。官方倒是表个态啊,能支持还是不能支持。我们没奢望能支持,但请官方给个准信儿。(当然我们是渴望能支持最新的webview的)

  • chender

    这个官方之前好像有表个态,说暂时是不会考虑,桑心

    2015-08-16 11:18

  • 枫桥居APP

    可以理解,毕竟腾讯不是免费开源,有各种限制

    2015-08-16 11:20

小龙哥

小龙哥 (作者)

@枫桥 官方也有官方的苦衷,他们人手不够是最大的苦衷,大家谅解一下。

枫桥居APP

枫桥居APP

@小龙哥 我表示能理解,只是官方对用户的态度不够重视,大家讨论这么激烈,官方也不回应一下,我就不相信官方没看见这条内容.我也不相信官方10多秒回复的时间都没有.

chender

chender - 与人为善

webview的问题确实蛮多了,看下这个帖子,看在你们的应用中有没有这个问题
http://ask.dcloud.net.cn/question/8829

  • 枫桥居APP

    有,反正有些机型就是不断抖动,慌的老眼昏花,在ios下基本上不会

    2015-08-17 10:37

hilongjw

hilongjw - cov

建议统一一个webview版本,老android的webview实在是坑

小龙哥

小龙哥 (作者)

@枫桥 我明白你的意思,你是希望官方能给一个时间表,一年,二年都行。最起码大家都有一个盼头和希望。

小龙哥

小龙哥 (作者)

其实,主要是安卓方面问题比较多
官方暂时不整合优化的话,希望可以出一个安卓离线打包自行整合的教程,暂时扛一扛。

chender

chender - 与人为善

@小龙哥 两年黄花菜都凉了。。。这是很急的事情;
我当时把这套框架推荐给了一些朋友用,现在他们都放弃了,我也在纠结中

枫桥居APP

枫桥居APP

回复 chender:我也打算先研究这原生app,其实原生app开发并没有想象那么难,无非就是拖几个控件过来,然后改吧改吧,java和oc语法也都能理解,只是刚开始开发会比较痛苦一点,但后面就会很爽.

不过我不会放弃hb,毕竟精力有限,暂时先这样

地图

地图

同样关注,集成第三方webview性能更好,大个10m,20m也无所谓的。不知道官方怎么会有这样的想法。

徐笨笨

徐笨笨

实在是不能忍,360在乎大小,所以你们就不在乎我们这么多用户的实际情况吗?现在项目正式上线了,用户投诉一塌糊涂,你让我们这些人怎么办?哪怕是出一个可选整合浏览器引擎的形式也可以啊。

  • 蔡繁荣

    什么问题被用户投诉得一塌糊涂?

    2015-08-24 16:12

  • 蔡繁荣

    Android5.0 切换闪烁,触摸闪烁吗?

    2015-08-24 16:12

  • 徐笨笨

    安卓用户反馈……卡,慢,进不去

    2015-08-24 16:27

DCloud_heavensoft

DCloud_heavensoft

目前的调查结果显示在Android5.0上的各种怪异问题基本都是硬件加速造成的。
如果大家有条件测试,可以在manifest里配置关闭硬件加速,然后打包,然后安装在Android5.0手机上看看效果。
下一步DCloud将提供统一不同平台硬件加速策略兼容的方案。

  • 小龙哥 (作者)

    IOS平台几乎不用考虑了。安卓嘛,各种方式我都试过了,最大的问题就是webview渲染的问题千奇百怪,说句实话,硬件加速效果不明显,可有可无。

    2015-08-25 10:25

  • 枫桥居APP

    希望下个版本就能解决安卓5.0的问题,陆陆续续有用户反馈白屏等问题,一看是安卓5.0,虽然大部分是安卓4但5.0的用户越来越多,特别是新机器。

    2015-08-25 13:55

  • DCloud_heavensoft

    回复 小龙哥:android5上,硬件加速效果确实不明显,还容易引发各种诡异渲染问题。但老andriod手机上关了硬件加速,长列表滚动都会不流畅。所以我们需要提供兼容方案。

    2015-08-26 22:18

  • 我勒个去

    回复 DCloud_heavensoft:确实如此,连双WEBVIEW做的侧拉菜单,在打开菜单的时候,遮罩层会抖以下,真机调试的时候,由于没有加速,反而不抖

    2015-12-26 21:15

  • 我的一沓

    说说我观察到的,差别实在是有点太大!看GPU呈现模式分析图表,没开启就是珠穆朗玛峰,开启了就是个连绵的山坡而已。。。

    2016-06-29 16:46

花笙科技

花笙科技

真的是赶紧优化内核,大势所趋

我勒个去

我勒个去

能否做到让客户自己选择呢,在乎包的选择现在的,不在乎的选择三方内核

maq

maq

看了前面 @DCloud_heavensoft: 的解释,完全能够理解。

不过问题还是在那里。系统版本差异产生了大大小小各种坑,有些诱人的新特性无法享受(比如 WebviewStyle 的 background:'transparent',多强大的特性啊,仅仅因为【Android 4.0以下系统窗口显示白色背景】而沦为鸡肋)。

时间已经过去了近半年,不知 DCloud 在这方面是否有所计划。作为一个【非大App开发商】,我其实也有着一定程度的“追求极致”的倾向,但经常被时间、人力、技术储备等方面的原因所裹挟,如果安装包增大数个 M 换来的是统一的、稳定的、较新的 webview 特性支持,我会非常乐于接受。

除了安装包体积之外,要支持“可替换的 webview 引擎内核”本身应该也是一个不小的工作量。官方也许有很多重要的事情等着去做,这个事情即便想做,也未必能排在前面,理解。我只是表达一下个人的想法:这个功能对于像我这样的广大的【非大App开发商】来说,绝对是排名第一的福音。最直接的效果就是,这个问答社区里近一半的问题可能根本就不会出现了。

下面这句话是在另一个网站上看到的:
Cordova 4.0 now supports Crosswalk pluggable webview!

汉中李

汉中李

做成可选是个好方案,支持+2

Runic

Runic

感觉 和 IE 一样一样的,不兼容就是不给你完美解决方案,自行规避。呵呵脸

Jauns

Jauns

这个贴持来还是没人回应

786039294@qq.com

786039294@qq.com

开来使用Dcloud开发APP最终都会来这个帖子~~18年了,三年过去了看来集成是无望了~

  • DCloud_heavensoft

    三年不改,是因为x5确实没用。楼上抱怨的性能问题早已解决

    2018-04-11 18:36

bober

bober

dclound把你们忽略了。。

  • 小龙哥 (作者)

    我也打算暂时放弃DCloud开发app了

    2016-01-04 12:14

该问题目前已经被锁定, 无法添加新回复