V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iugo
V2EX  ›  程序员

微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?

  •  
  •   iugo ·
    iugo · 2016-06-23 10:13:17 +08:00 · 20110 次点击
    这是一个创建于 3111 天前的主题,其中的信息可能已经有所发展或是发生改变。

    iOS 上, 微信没得选.

    Android 上可以有多种选择:

    1. 可以跟随系统使用系统的 WebView. 弊端可能是国内环境乱象, 系统的 WebView 大多不是 Chrome, 可能更坑.
    2. 目前微信的做法, 使用自己的 WebView, 但根据 UA, 是 QQ 浏览器.
    3. 既然内置了, 为什么不使用 Chrome?

    作为 Web 开发者, 在乎更先进的语法和 Web API.
    微信既然想吸引开发者, 就应该在乎开发者的需求, 减少开发者的负担, 比如在适配上的工作量, Chrome 版, Safari 版, 再来个 MQQBrowser 版, 好累呦.

    对我比较重要的几个东西:

    • fetch
    • execCommand

    还有样式上的一些奇怪的问题. 许多组件都不能重用, 只好针对微信再重新开发.

    第 1 条附言  ·  2016-06-23 14:44:29 +08:00
    不是说我就对, 微信就错. 更不是微信不按照我说的来就不好.

    只是发表看法. 有的人喜欢冷色系, 有的人喜欢暖色系, 我就说说我为什么喜欢暖色系而已.
    第 2 条附言  ·  2016-06-23 16:33:46 +08:00
    在解释下刚才说的 1, 2, 3

    1. 可以跟随系统使用系统的 WebView. 弊端可能是国内环境乱象, 系统的 WebView 大多不是 Chrome, 可能更坑.
    2. 目前微信的做法, 使用自己的 WebView, 但根据 UA, 是 QQ 浏览器.
    3. 既然内置了, 为什么不使用 Chrome?

    1 应该是被排除了, 至少在国内不是一种好的做法.
    注: 但如果通过 Google Play 安装的微信, 且系统 >= 5, 则使用了系统的 Chrome WebView.

    2, 3 都是内置 WebView.
    为什么不用 Chrome WebView 而用 QQ 浏览器?

    这下清楚无歧义了吧?
    我觉得讨论方向应该是: QQ 浏览器团队 X5, 对比 Chrome WebView. 我个人觉得 X5 不够好, 或者说 X5 很不错, 但是和 Chrome WebView 比起来不够好, 所以才有此帖.
    第 3 条附言  ·  2016-06-24 09:43:24 +08:00

    吸收了大家的经验, 我觉得一个比较中立的看法应该是这样的:

    (注: Chrome WebView 指代的是 Google Play 商店中的 WebView, 说法不官方, 不标准, 只为区分. Android 5 及以上支持.)

    • 对于浏览器来说, 新特性的支持可以作为衡量优劣的重要指标之一. 比如 TBS 2.1 (http://x5.tencent.com/guide?id=4000) 会说自己现在支持什么什么新特性了, HTML5 支持程度更高等等.
    • Chrome WebView 的实际效果应该好于 TBS. 比如 TBS 2.1 宣称 html5test.com 得分 480. 原生 Android 5.1 安装微信后, 据称微信自动关闭 TBS 采用系统 WebView, 测得 507. 另外比如我说的 fetch, execCommand. 不是说微信一定要有, 但单独看的话(假设稳定安全性没变), 支持更多特性总是好的.
    • Chrome WebView (可能因技术或者版权原因)无法被内置到微信中. (我之前天真地以为有这种可能, 所以才问)
    • TBS 在国内环境下, 是一个解决系统 WebView 分裂问题的比较好的方案. TBS 的确能解决一些问题(比如支持 Android 4.x), 并且已经被验证可靠.
    71 条回复    2016-06-24 18:09:04 +08:00
    alect
        1
    alect  
       2016-06-23 10:22:12 +08:00
    是为了让你用 qq 浏览器
    以腾讯的能力完全可以实现各种需求啊
    hxsf
        2
    hxsf  
       2016-06-23 10:22:56 +08:00
    因为是一家

    君不见 别人发文件给你 默认都是 “用 qq 浏览器打开” 在菜单里才有 “用其他应用打开” 么
    viator42
        3
    viator42  
       2016-06-23 10:27:43 +08:00
    应该是为了实现公众号 js 接口的功能吧.比如网页获取微信号什么的
    cst4you
        4
    cst4you  
       2016-06-23 10:34:04 +08:00 via Android
    解决 webview 碎片化问题(自己写过页面就知道多恶心
    跟自家 app 更好结合,实现更多核心功能对接
    kikyous
        5
    kikyous  
       2016-06-23 10:37:40 +08:00   ❤️ 9
    安卓微信可以使用 chrome webview

    安装 Android 系统 WebView
    https://play.google.com/store/apps/details?id=com.google.android.webview

    /data/data/com.tencent.mm/app_tbs 把这个文件夹的权限都取消

    然后微信就使用 chrome 内核了
    iugo
        6
    iugo  
    OP
       2016-06-23 10:40:09 +08:00
    @cst4you 参考第三种选择: 既然内置了, 为什么不使用 Chrome WebView?
    iugo
        7
    iugo  
    OP
       2016-06-23 10:44:21 +08:00
    @kikyous 我接触到的 非大陆国行的手机 微信都使用系统的 WebView. 国行的都不支持.

    但是对于大多数用户来说, 都使用国行手机. 都是 MQQBrowser.

    既然微信允许系统使用 Chrome WebView, 为什么不干脆内置 Chrome WebView 呢?

    WebView 的限制? 还是微信不想用?
    just4test
        8
    just4test  
       2016-06-23 10:44:22 +08:00
    @iugo 为什么要内置 chrome webview ?
    你是管微信开发的,你们这边有现成的 qq 浏览器团队,接口想要人就给,手把手的帮你加进去,有什么需求随时帮你搞定。你有什么理由去用 chrome webview ?
    iugo
        9
    iugo  
    OP
       2016-06-23 10:46:05 +08:00
    @just4test 我觉得我已经说得比较清楚了:

    > 微信既然想吸引开发者, 就应该在乎开发者的需求, 减少开发者的负担, 比如在适配上的工作量, Chrome 版, Safari 版, 再来个 MQQBrowser 版, 好累呦.

    > 不支持 fetch, execCommand 等, Chrome WebView 支持.
    just4test
        10
    just4test  
       2016-06-23 10:46:43 +08:00
    @iugo 然后你猜,是先有用 qq 浏览器的国行版微信,还是先有用系统 webview 的国际版微信?
    iugo
        11
    iugo  
    OP
       2016-06-23 10:49:13 +08:00
    @just4test 你说这话是在回答 "微信 Android 大陆版为什么不用 Chrome WebView 而用 QQ 浏览器?" 这个问题吗?
    just4test
        12
    just4test  
       2016-06-23 10:50:38 +08:00
    @iugo 微信不需要吸引开发者。几个新特性也不是这种级别的产品的决定性因素。对于很多东西来说,能不出乱子就够了。
    daodao
        13
    daodao  
       2016-06-23 10:50:38 +08:00
    背靠集团这个大树,取之不尽用之不竭的资源,各种成熟的支撑项目那么多,为什么找海外其他家的?
    SourceMan
        14
    SourceMan  
       2016-06-23 10:50:59 +08:00   ❤️ 2
    人家明明用的是 X5 http://x5.tencent.com/doc?id=1001
    hhh
        15
    hhh  
       2016-06-23 10:51:41 +08:00
    开发者不需要吸引,老板让开发就开发
    iugo
        16
    iugo  
    OP
       2016-06-23 11:00:37 +08:00
    @just4test
    @daodao
    @hhh

    参考 @SourceMan 给的链接. 腾讯浏览服务, "即可解决一切令开发者们头疼的问题,为用户提供最优秀的浏览体验". 这句话一半说开发者, 一半说用户. 可以看出开发者的重要性吧?
    domty
        17
    domty  
       2016-06-23 11:23:49 +08:00
    因为微信和内置的浏览器要进行大量的交互。
    本质上微信浏览器是普通浏览器+微信独有的 api 接口。
    deef
        18
    deef  
       2016-06-23 11:36:00 +08:00   ❤️ 1
    “ 8) 无系统内核的碎片化问题,更少的兼容性问题”
    你知道国内那~~~~~~~么多 Android 版本的设备,还有一些“ OS ”自己改系统的 Webview ,还不如统一用自己的 X5 内核(注意这里不是 QQ 浏览器,是 QQ 浏览器的 X5 内核,虽然没什么区别)
    甚至有的时候比系统自带的 Webview 快一点点(曾经褥羊毛的一个设备,天语 L920 上)
    而且还是自家的技术,为什么不支持呢。
    mko0okmko0
        19
    mko0okmko0  
       2016-06-23 12:11:35 +08:00
    我沒回答樓主,但我可以說:
    QQ 瀏覽器開源嗎?
    傳送過程我該如何信任?
    就這樣,此題已解.
    mko0okmko0
        20
    mko0okmko0  
       2016-06-23 12:11:53 +08:00
    我没回答楼主,但我可以说:
    QQ 浏览器开源吗?
    传送过程我该如何信任?
    就这样,此题已解.
    sagnitude
        21
    sagnitude  
       2016-06-23 12:32:32 +08:00   ❤️ 1
    1. Chrome Webview 不是可以一个安卓项目可以“直接打包在 apk ”里面的东西,能用的只是“ Android Webview ”
    2. Android Webview 在不同安卓版本是 **几乎完全不同** 的,在 Android <4.4 上, webview 不是 Chrome ;随着安卓版本的变化,内置 webview 所实现的技术标准差别太大,根本无法控制一个微信 web 页面在不同系统 webview 上的表现
    3. Android Webview 在不同厂商的 ROM 上,实现也是天差地别,同第二点,无法控制产品的表现,而使用同一个内置的浏览器内核可以控制
    4. QQ 内核是集团内部的东西,举个具体的例子,在当前 WebBluetooth 还在草案阶段, WebBluetooth API 目前只有 Android 6.0 及以上才能使用,而微信已经能在页面上使用蓝牙信息(只要有蓝牙和有微信),请问如何在系统 webview 上使用蓝牙接口?
    5. 自定义 url scheme 是一个很重要的功能,系统 webview 能提供的自定义是受限的,如果使用自己的产品,可以无限制地自定义和使用,微信的交互很多,基于一个简单的系统 webview 开发如此复杂的功能,听起来像是一场噩梦


    补充:
    WebBluetooth 接口实现情况: https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md
    sagnitude
        22
    sagnitude  
       2016-06-23 12:35:11 +08:00
    使用系统 webview ,就像楼主你自己说的,只会增加适配的工作量,不会减少开发者的负担

    开发一个页面,只有部分用户能看见,其他人只能看见一个报错信息,听起来不是一个好主意

    比如 WebBluetooth ,比如 WebGL (没错,之前安卓微信不能在所有平台上使用 webgl )
    sagnitude
        23
    sagnitude  
       2016-06-23 12:38:13 +08:00
    @iugo 没有用户需求,就不需要开发者,开发者不是和用户对等的
    sagnitude
        24
    sagnitude  
       2016-06-23 12:53:57 +08:00
    顺便说下 fetch ,参见兼容表格:

    https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API#Browser_compatibility

    Safari webkit 不能用,老的 Android webview 不能用,楼主你就不该用 fetch ,这个组件本身就不应该被用作移动端开发
    sagnitude
        25
    sagnitude  
       2016-06-23 12:55:37 +08:00
    补充:
    http://caniuse.com/#feat=fetch

    Android Browser 需求 Android >= 5.0

    并且华为 P8 虽然是 Android 5.1.0 ,但是内置 webview 不是基于 Chrome 的,之前我们开发 WebGL 的时候就差点撞死在 P8 上,最后改成 canvas 了
    ahtsiu
        26
    ahtsiu  
       2016-06-23 14:15:50 +08:00
    像 crosswalk 这样直接使用没有经过裁剪的 chromium 作为内核的话,这个“内核”本身就二三十 M 咯。
    裁剪的话,就是 X5 啦
    learnshare
        27
    learnshare  
       2016-06-23 14:27:35 +08:00
    为了增加自己的 API
    smithtel
        28
    smithtel  
       2016-06-23 14:33:27 +08:00
    感觉楼主真是萌萌哒。
    iugo
        29
    iugo  
    OP
       2016-06-23 14:42:04 +08:00
    @sagnitude

    您说的第一点和第四点可能是题解. 我没做过 Android 开发, 如果开发中集成 Chrome WebView 难度大, 那这的确是很可信的一个理由.

    关于第二, 第三点. 要不要用系统的 WebView, 我觉得没必要再说了吧, 再次引用主题帖中我已经说过的:

    > 可以跟随系统使用系统的 WebView. 弊端可能是国内环境乱象, 系统的 WebView 大多不是 Chrome, 可能更坑.

    顺便说下 fetch, Safari 的确不支持, iOS 7 连 Promise 都不支持. 这些通过 polyfill 都能解决. 但这不是拒绝的理由吧? 因为一些东西不支持, 就不该用?

    这已经是个世界观的问题了:
    - 一些国内浏览器不支持 HTTP/2, 运维人员就能在优化服务让能用 HTTP/2 的人用上?
    - 浏览器对 ES6 支持有待提升, 开发者就不该用 ES6 语法做开发?
    - 不考虑什么新功能, 那就不会有以前 io.js 的分裂和现在浏览器版本号的比赛.

    再说另外一个产品观的问题:

    > 没有用户需求,就不需要开发者,开发者不是和用户对等的

    微信可以不考虑开发者, 没问题. 只不过在我个人看来, 微信是希望吸引开发者依赖微信开发更多所有 "轻应用" 的. 当然, 也可能我错了, 微信才不管开发者, 微信有用户, 如果开发者想要用户, 要巴结着微信.
    Biwood
        30
    Biwood  
       2016-06-23 14:45:17 +08:00
    微信在学 Apple 没看出来么,设计风格都是跟着 iOS 走,试图建立一个封闭的生态圈,这样才能更好的圈钱
    morethansean
        31
    morethansean  
       2016-06-23 14:51:10 +08:00
    @iugo 可以明确地告诉你,最主要的原因就是 2 , 3 点。
    P0P
        32
    P0P  
       2016-06-23 14:57:59 +08:00
    @kikyous 这是怎么发现的。科科,关闭了之后微信看文章速度起飞了
    iugo
        33
    iugo  
    OP
       2016-06-23 14:59:50 +08:00
    @morethansean 重点在 2, 3 点的话. 我只能说, 请看清原文再继续讨论, 否则风马牛是互相浪费时间.
    wzxjohn
        34
    wzxjohn  
       2016-06-23 15:17:04 +08:00
    @iugo 实话说我不是很明白,您既然知道国内原生 WebView 这么烂,为啥还说用原生的不需要解释?这点让我很费解。在我看来您的做法就是明知道某个东西又贵又不好用,有更便宜好用的方法,可是你就是要选贵且不好用的,还不说为啥。。。我理解可能您是看到了这个又贵又不好用的东西的某些有点,可是您不说我们怎么理解。。。
    fyooo
        35
    fyooo  
       2016-06-23 15:30:32 +08:00
    没有做过 android 开发的同学提的技术问题,@sagnitude 同学辛苦的作出详细的技术回复,然后得到的不是感谢,而是#29 一堆「产品观」,「世界观」的废话,醉了...
    jhdxr
        36
    jhdxr  
       2016-06-23 15:48:44 +08:00   ❤️ 1
    1. 原生的 webview 很糟糕,国内由于各种定制这个问题更严重。但接入原生的 webview 是门槛最低的方案,所以还是有很多产品会这么选择
    2. 排除了原生 webview 之后,如果要自制一个内核是养一大个团队的,微信不可能直接养这么一个团队(反过来说如果有这么大一个团队也不会寄居在微信之下),所以一般是要找一个现有的接入
    3. 既然要接入,一个是自家的浏览器,如 @just4test 所言,要啥给啥;另外一个是 chrome ,虽然知名度很高,看上去也很好用,但是变化不受自己掌控,解决问题神马都太麻烦。更重要的一点是,内置 chrome 会不会有各种授权的问题?直接用自家的完全不用担心这点,而且还有助于双方的 KPI


    上面这个问题是以客户端开发的角度去看的(利益相关:曾在 BAT 中某公司直接负责 web 容器的团队干过)
    最后 LZ 提这个问题是以前端开发的角度去看的,而且是以外部开发者的角度去看的。然而说实话,谁在乎你?以微信的这种体量,别说只是用了一个也许不是这么好用的内核,哪怕它抛弃了 html ,自己重头做一个轮子都会有一大堆人去贴上去。与上面提到的 3 点相比,方便外部开发者根本无足轻重。

    以上回答在 LZ 看来也许依然只是一些所谓的产品观之类的差异,然而你要知道绝大多数时候起决定性作用的都**不**是技术因素。
    raptor
        37
    raptor  
       2016-06-23 15:50:09 +08:00
    用 QQ 浏览器不是问题,问题是 QQ 浏览器太烂,简直不能忍
    also24
        38
    also24  
       2016-06-23 16:03:44 +08:00
    讲真,光是冲着能解决 Android 4.4 上 input 标签的问题,我就想用 X5 内核……
    BOYPT
        39
    BOYPT  
       2016-06-23 16:05:31 +08:00
    想必楼主不大了解 android 上 webview 的坑吧。
    jimmyye
        40
    jimmyye  
       2016-06-23 16:14:23 +08:00
    只有我的微信内置 X5 浏览器可能被劫持了吗?访问 ipip.net 显示的是外地 ip 。
    https://v2ex.com/t/251005
    Felldeadbird
        41
    Felldeadbird  
       2016-06-23 16:27:04 +08:00
    就是苦了开发者,开发者才不会失业啊。腾讯这是用心良苦啊。
    iugo
        42
    iugo  
    OP
       2016-06-23 16:41:19 +08:00
    @wzxjohn
    @fyooo

    附言 2, 不重复了.

    另: @sagnitude 说到的蓝牙部分, 因为以前没接触, 所以很受教. 但其他, 我不觉得技术上有什么我之前没注意到的地方. 至于观点问题, @fyooo , 不是我先提起来的, 观点之争也不是本帖的目的.

    > Safari webkit 不能用,老的 Android webview 不能用,楼主你就不该用 fetch ,这个组件本身就不应该被用作移动端开发

    这是技术层面的吗? polyfill 的存在不就是为了让一些新技术能在老设备上兼容吗, 技术上何来不能用只说?

    > 没有用户需求,就不需要开发者,开发者不是和用户对等的

    这是技术层面的问题吗? 是不是方向性的问题?
    wzxjohn
        43
    wzxjohn  
       2016-06-23 16:55:45 +08:00
    @iugo 搞了半天你是想问这个。。。这问题太简单了。
    不管是之前有人说的 Android WebView 也要 Chrome 也好,你想要内置只能选择适配它,适应它。这时候内部有一个自研的内核,你想要什么别人给你做什么,而且以最快的速度配合你做好,请问你用啥?
    iugo
        44
    iugo  
    OP
       2016-06-23 17:02:45 +08:00
    @wzxjohn 我原来的帖子中已经说三点并且加了自己简短的分析, 没想到楼会歪.

    我的手机是几乎原生的 Android 5.1, Google Play 上装的微信.

    一些小玩意, 我在自己的手机上测试没问题, 可其他人的 Android 手机上都出了问题. 然后做了小范围 UA 调查发现大家的微信几乎都是 MQQBrowser 6 (好像也标了 Chrome 31)版本, 我的是 Chrome 51 版本.

    微信有些地方还是会使用 Chrome WebView 的, 说明微信对 X5 并不绝对支持. 所以才有此一问.
    xqinghu
        45
    xqinghu  
       2016-06-23 17:10:45 +08:00
    @iugo 当系统不满足 X5 运行条件时(动态内存),是使用系统 weiview
    morethansean
        46
    morethansean  
       2016-06-23 17:13:50 +08:00   ❤️ 1
    @iugo ……我是说上面那个人说的 2 , 3 点……不知道我们说的是不是一个东西……
    不知道你所谓的 Chrome Webview 是啥意思,你是说基于 Chromium 的 webview 吗?
    X5 本来就是基于 Chromium 的,和大多数壳浏览器一样。为什么会有壳浏览器就是因为他们想做些个性化改造或者实现一些自己的功能和需求呗。你所谓的更先进的 API blablabla 一大堆,说白了就是这些自己改造的 webview 基于的 Chromium 版本比较低所以功能不行性能不行。
    然后我感觉你的口气好厉害啊……像是我什么地方冒犯了你一样……我重新读了几遍我的话感受了一下文字里的口吻,觉得自己跟个纱布一样回答别人的问题还被人喷没看清题也敢来回答问题简直就是浪费时间。我觉得我提问的时候,不管回答者说啥,都不会有这样的态度。
    iugo
        47
    iugo  
    OP
       2016-06-23 17:31:10 +08:00
    @morethansean ... 抱歉, 口气太厉害了. 对比起.

    只是觉得自己已经说到的东西再被重新灌输, 要不就是没认真看文章, 要不就是把我当纱布. 所以带了戾气.

    我又看了遍我的话 "重点在 2, 3 点的话. 我只能说, 请看清原文再继续讨论, 否则风马牛是互相浪费时间."

    可能是我主谓宾分得不开. 第一个句号后面的话不是针对任何某一个人. 只是简单地认为, 对一个求教素菜如何烹饪的人, 植物种植专家讲食物如何有营养, 即便专家费心尽力, 可是对双方, 都无助益.

    不针对任何人, 只是说这种行为对双方没有帮助.

    如果我问题没描述清楚, 抱歉浪费大家时间了.
    iugo
        48
    iugo  
    OP
       2016-06-23 17:31:42 +08:00
    @morethansean 对不起. 没有校对文字...
    Orzpls
        49
    Orzpls  
       2016-06-23 17:33:48 +08:00 via Android
    刷份额,不知前面有人提到没有。
    sagnitude
        50
    sagnitude  
       2016-06-23 17:34:40 +08:00   ❤️ 3
    楼主你如果只是来吐槽,来骂这该死的内置浏览器怎么这么烂,没问题,我也想骂,各种排版不能用, WebGL 都不能用,简直坑爹,而且微信内置浏览器是提供 WebGL 接口的,就是调用之后没有任何效果,不是简直,就是坑爹。

    但你抬头看看标题,标题是一个问句吧?


    1. 所有 web 开发者都必须为每一个平台做 polyfill
    2. 挑选一个弱一点但是在几乎所有机器上都能跑的版本,微信内置该版本的某浏览器,所有 web 开发者在这个基础上开发
    两者中,我认为 2 是更负责任的

    在附言中,你提到了一个前提:“ Android >= 5.0 ”,瞬间就少了 54.5%的用户 (数据来源: 2016/6/6 更新 https://developer.android.com/about/dashboards/index.html

    使用系统 webview , web 开发者需要适配 如下浏览器:
    Android 2.x Webview; (市场占比 2%)
    Android 4.0-4.3 Webview; (20.8%)
    Android 4.4 (Chromium 30); (31.6%)(增加 GeoLocation 、 WebSocket 支持)
    Android 4.4.3 (Chromium 33); (包含在上面)(增加 Vibration API 支持)
    Android 5.x (Chromium 37+); (35.4%)(增加了 WebGL , WebRTC , WebAudio , WebComponent 支持)
    Android 6.x+ (>= Chromium 43) (10.1%)
    我的手机目前是 Android 6.0.1 (Chromium 51)
    iOS Safari (很多版本)
    各种厂商自己做的奇怪的浏览器适配

    使用微信 WebView ,开发者需要适配如下浏览器:
    QQ X5 内核(提供基础 HTML5 支持,部分新特性如 WebSocket ,部分 WebGL 支持)
    iOS Safari (没得选)
    Android >= 5 的基于 Chromium 的 WebView

    你觉得哪个比较简单?

    为何使用内置浏览器(注意,微信不是“内置 WebView ”,是内置一个“浏览器内核”),而不是直接使用基于 Chrome 的 WebView
    1. 54.5%的安卓机没有该功能
    2. 然后就没有然后了

    为何使用内置浏览器而不是使用系统 WebView 呢
    你要谈技术,那就谈技术
    举个例子, WebSocket ,我在 Android 4.1 的机器上,用微信可以使用 WebSocket ;而 Android WebView 只有 Android >=4.4 才支持 WebSocket
    再来一个, Android 2.x 的 WebView 不支持 position:fixed 和 overflow:hidden ,你喜欢么?
    安卓 webview 的坑很多,如果你真的做的话,你会后悔产生“用 polyfill 解决这些问题”的想法的

    为何内置 QQ X5 内核,不内置一个 Chrome
    1. Chrome 打包 zip , 50MB ,(比微信大)
    2. 然后就没有然后了

    你使用最新的语法,然后来兼容老浏览器,这除了给自己开发带来快感(和恶心感),还有什么其他的好处? polyfill 肯定是需要用原生实现来实现的(如果能实现),必然是有性能损失的。

    关于你说的产品观,如果你是个人开发者,或者是个创业者,凭热情和自己的想法活动,或者说你面对的平台比较稳定,你这么做没有问题;如果是面向所有用户的公司行为,我认为稳定是高于对 bleeding edge 的技术的热情的

    举个例子吧,我现在维护的项目里,有一个是针对我们在桌面应用内置 Chromium 浏览器的,版本统一是 Chromium 49 ,我可以在这里面非常自由地使用各种高级语法;而有另一个项目是针对微信用户开发的,开发的时候自然就得小心谨慎

    微信是一个商业产品,做出来是给用户用的,不是给开发者狂欢的
    iugo
        51
    iugo  
    OP
       2016-06-23 17:41:50 +08:00
    @morethansean 目前 X5 的渲染引擎应该是基于 WebKit, 但给我的感觉和 Chromium 相差比较远, 许多特性没有得到支持.

    我仅仅是从 Web 开发的角度看, 觉得 X5 不理想. 又想到既然有些版本的微信可以使用 Chrome 内核(Chrome for Android), 为何不将其替换掉 X5?

    现在看来, 内置 X5 以外的 WebView 难度是很大的, 而 X5 也还堪用. 所以微信团队做了目前这样的设计.
    iugo
        52
    iugo  
    OP
       2016-06-23 17:58:21 +08:00
    @sagnitude 感谢. 吐槽只是附带.

    不知道我总结后, 学到的这样的观点是不是正确: QQ 浏览器开发团队的 X5 比市场上一大部分 Android WebView 都可靠. 要做得更好, 比如像 Chrome 一样成本是巨大的, 所以不做.

    我也不想用 polyfill, 希望一些特性得到浏览器重视, 所以有此一问. 有些问题是 polyfill 解决不了的, 如我的第二个例子 execCommand, 可能因为会带来安全问题, 所以移动端 Safari 也没有支持.

    或许有比 X5 更好的, 我能想到的就是 Chrome WebView, 这样能让微信开发更少坑. 这就是我的想法.

    之前您说的, 如一些特性的文档及适用范围, 我觉得和主题无关, 没必要科普. 浏览器支持, 不能只和 Safari 比, 也该和 Chrome 比.

    其他非技术的就不说了. 我的观点没有参考价值.
    iugo
        53
    iugo  
    OP
       2016-06-23 18:01:38 +08:00
    @sagnitude 另外, 除了性能, 开发效率也应该被考虑. 我想您应该不会去使用 RoR, 但是这代表一些人的开发态度. 是否被恶心到, 冷暖自知.
    sagnitude
        54
    sagnitude  
       2016-06-23 18:15:21 +08:00
    @iugo 我确实不用 Ruby ,开发效率我是有关注的,我们前端很多项目整体采用 AngularJS+requirejs+karma+jasmine ,写起来还是蛮快的,不太用动脑子

    确实,如果浏览器给力,技术这边可以很省力,我们在针对 Chromium 49 编写桌面程序的时候就很舒服;而为微信写东西就需要相对有经验的人来做

    但是,了解针对限制更大的浏览器( IE ,微信)进行开发的人,毕竟比了解 ES6 的人好招…

    ES6 确实可以带来开发效率的提升,不过这些很大程度上是可以用框架来弥补的,更何况框架和 ES6 都有一定的学习成本
    choury
        55
    choury  
       2016-06-23 18:43:51 +08:00 via Android
    @iugo 对于符合条件的(google play 版本,安卓版本高于 5.0)使用的是系统的 webview ,并不存在一个内置 chrome 的微信版本,这些版本内置的也是 x5 ,只是没有启用
    smallthing
        56
    smallthing  
       2016-06-23 20:09:38 +08:00
    微信 web 开发者工具里直接切换 webview
    你在微信里输入网址也可以
    //deletetbs 也可以
    smallthing
        57
    smallthing  
       2016-06-23 20:16:19 +08:00   ❤️ 1
    @jimmyye
    多看看 x5 的官方文档吧.
    x5 默认都是走腾讯的 http 代理的
    当然你可以关闭.
    微信内网址是 debugx5.qq.com

    至于在应用里集成 chrome 的 webview
    国外的新机系统都包括 chromewebview 了,还有 chrome custom tab 这么高大上的功能可以用
    在墙内 webview 乱七八糟的环境下,这有点说笑了,有几个手机预装了可以自动更新的 chromewebview?
    这不还不如 x5 吗

    利益相关:nexus5x 使用者.
    smallthing
        58
    smallthing  
       2016-06-23 20:22:10 +08:00
    @morethansean :不知道你所谓的 Chrome Webview 是啥意思,你是说基于 Chromium 的 webview 吗?

    墙真的是害了一大批人.
    害了一大批安卓机.
    http://www.coolapk.com/apk/com.google.android.webview
    chromewebview 就是这个东西,他不是 chromium,是闭源的,是可以和 google play service 一样自动更新的,当然,在其他国家必须翻墙才可以.
    题主,如果微信强制使用这玩意,你去挨个机子安装这个?
    smallthing
        59
    smallthing  
       2016-06-23 20:23:02 +08:00
    当然我没有说 x5 多么好, 说实话,比较糟糕,但是可以用.
    jimmyye
        60
    jimmyye  
       2016-06-23 20:50:39 +08:00
    @smallthing 谢谢告知,真希望你没有说第一句话。你的第一句有点莫名其妙,作为微信用户发现疑似劫持行为,然后你让我“多看看 x5 的官方文档吧”?
    lzhr
        61
    lzhr  
       2016-06-23 20:54:52 +08:00
    今天想出个新东西,家里人马上就能配合你做,在国内选 X5 没什么好犹豫的吧。
    国际版倒是可以考虑一二
    lzhr
        62
    lzhr  
       2016-06-23 20:56:25 +08:00
    @jimmyye 他不是微信客服,你不是普通用户,这话没毛病
    smallthing
        63
    smallthing  
       2016-06-23 20:59:33 +08:00
    @jimmyye
    因为我感觉 V2EX 都是码农相关人吧
    http://x5.tencent.com/guide?id=4000

    http://x5.tencent.com/guide?id=2999 第 44 条
    jimmyye
        64
    jimmyye  
       2016-06-23 21:22:46 +08:00
    @smallthing 谢谢。因为之前没想过是默认走代理,无论如何都搜索不到相关资料,刚才通过代理关键字搜到了 http://x5.tencent.com/guide?id=2999 不知道当时有没有第 44 条。

    @lzhr 只能说每个人的标准不一样。因为我是开发者,我在使用微信时发现网络问题,于是我要去看 x5 的文档?
    zhangdawei
        65
    zhangdawei  
       2016-06-24 09:08:15 +08:00
    1 ,平台一致性,微信的装机量要对应各种各样稀奇古怪的机器, Chrome WebView 的锅 tx 肯定是不想背的。
    2 ,用了对腾讯有什么好处?
    cpp255
        66
    cpp255  
       2016-06-24 09:33:23 +08:00
    在 app 接了 X5 ,最近出现部分机型无法调用核心,加载完页面就是白屏。真是日了🐶。现在就只能等下个版本换回原生的 webview 。
    wistoch
        67
    wistoch  
       2016-06-24 09:56:42 +08:00
    现在微信中使用的 X5 是基于 Chromium M37 版本的(在 Android 5.0 WebView 基础上适配优化的,增加了部分 Service Worker 等功能)。
    H5 能力可以看 http://x5.tencent.com/guide?id=4000
    wistoch
        68
    wistoch  
       2016-06-24 10:07:22 +08:00
    @cpp255 接入 X5 后的问题,可以在 http://bbs.mb.qq.com/forum-110-1.html 这里反馈。

    @jimmyye 由于国内网络劫持问题很严重,微信未接入 X5 的时候,有 1.2%的页面访问被运营商劫持插入低俗小广告、流量球等, 所以 Android 上通过 X5 进行过代理加密防止运营商劫持。 现在大家在 Android 微信上应该看不到这种小广告和流量球了。 如果是在微信里做 web 开发,建议多关注 TBS X5 官方网站,毕竟内核是用的 X5 , X5 的已知问题,升级发布,都会在 X5 官网公布。

    @raptor 之前的 X5 内核开发比较早,是基于 Android 4.2 的 WebView 开发的。今年 4 月份已经全部升级成基于 Android 5.0 的 WebView (对应 Chromium M37 版本)并在此基础上增加了 Service Worker 等 H5 功能,后续会保持不断升级。 如果您使用中有什么问题,可以在论坛反馈。 http://bbs.mb.qq.com/forum-110-1.html
    vjnjc
        69
    vjnjc  
       2016-06-24 11:29:02 +08:00
    据我有限的相关经验来看貌似不是 qq 浏览器,当然也不是系统的 webview ,更不是 chrome 。很奇怪的一个微信团队的改写的类似 chrome 的浏览器。。。大部分时间用起来像 chrome
    vjnjc
        70
    vjnjc  
       2016-06-24 11:31:26 +08:00
    哦,原来那个东西叫 x5.。。
    faywong8888
        71
    faywong8888  
       2016-06-24 18:09:04 +08:00
    能用 Google Play 的手机 && 版本 > 5 基本上也能通过 Google Play 更新到 WebView ,在 chromium 内核的 webview 上本身各种 api 都稳定,没有多少坑。
    低版本 && 国行必然都是一些碎片化严重的机型,被国内厂商给定制成鬼样的,所以需要通过 x5 内核去把 html 5 的底层抹平。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2438 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:40 · PVG 23:40 · LAX 07:40 · JFK 10:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.