去年10月末,夸克浏览器横空出世。凭借「极简」主义的情感化设计以及无信息流、无干扰、沉浸式浏览的设计,吸引了大量用户的眼球,2.0版本上线引入的「轻应用」也颠覆了传统浏览器的形态,令人耳目一新。夸克浏览器打出的口号是「由简致极 回归初心」,王自如也评价:UC 在独善其身,夸克是兼济天下。一个浏览器如何兼济天下?掘金编辑 Linmi 带着同样的问题,对夸克浏览器研发团队进行了一次线上专访,尝试从技术的角度回答这个问题。

人不在多,有码则行
李志明:
夸克浏览器 Android 和 iOS 两个平台都有。Android 端有5人,iOS 端有3人。随着产品完善,需求逐步减少。目前 Android 端有 2人,iOS端 1 人,后面两个平台会保持 2人左右的开发人力。当然,我们有近百人的内核开发团队,这是夸克浏览器跟 UC 共用的。 团队的两位同学。 @刘智艺 是负责夸克 iOS 的同学, @张惠钧 是负责夸克 Android 的同学。他们都是开发经验非常丰富、产品感很好的开发人员,有问题也可以询问他们哦。@张惠钧 是酷安的小网红了,昵称「怕冷的瘦子」,在酷安跟夸克的爱好者打成了一片。
强大内核与卓越外壳协同减少缓存与应用体积
Linmi 问:
我刚刚去酷安看了一下,看到惠钧有发一个关于浏览器缓存对比的图片,夸克浏览器的缓存只有1.45M,而某浏览器有13.9M,想知道夸克浏览器是如何进行优化,将缓存减少到只有其他浏览器的十分之一的?


张惠钧 答:
其实这个问题存在一些误会,浏览器的缓存数据大小跟用户的使用时长有关,夸克在使用较长时间后数据也会增长。
但是在同等使用条件下,夸克的缓存数据处理是很有优势的,一方面有赖于我们背后强大的内核团队,它们在内核模块做了十足的优化;另一方面,我们外壳(相对于内核部分就是外壳)在缓存数据的处理策略上也下了功夫,会智能地根据用户的使用情况、手机情况去动态帮助用户处理过时的、不需要的数据,让浏览器保持干净。
Linmi 问:
我刚刚对比了手机上的夸克和 Chrome ,缓存相差已有百倍。惠钧刚刚也说了夸克团队在缓存数据的处理策略上下了功夫,那么夸克作为一款多端产品,iOS 和 Android 两端的缓存优化的技术方案上有什么异同?
我使用 App Store 下载夸克时,发现应用大小有29.3M,再去看 Android 应用市场,应用体积也达到了21.8M,和同类型的产品体积差不多,但是夸克的界面却没有同类产品复杂,那夸克这 20M 体积包含了什么?
张惠钧 答:
我来回答下第二个问题:
夸克是在去年10.31上线的,当时安卓版的大小是18+M,经过一年的版本迭代,逐渐达到了现在的21.8M;
这个包体大小,占用最大的是我们强大、高效的内核,其大小是14+M;
剩下的部分则是我们外壳的代码和资源(图片、文字等);
iOS部分由@刘智艺补充~
刘智艺 答:
对于第一个问题,应该说两端在缓存优化的技术方案上并没有什么差异。
第二个问题,对于 iOS 也是相似的,包 size 内容包含了我们以 gruop 为单位项目通用组件,大部分 UC 团队的技术沉淀,虽然我们较 Android 端来说没有一个成块的内核,但是优秀的网络协议层、WebView 修饰技术、视频托管服务等藏在深处的用户服务支持能力,都是需要必须但并不大的 size 作为前提。
而且因为 bitcode 的支持,理论上来说 AppStore 显示的包 size 是包含所有机型处理器的可执行文件,而下载下来则不然。
Linmi 问:
由应用大小我想到了应用瘦身,掘金上经常有作者发布应用瘦身的相关文章。我所了解的有图片资源瘦身,对一些不必要的库进行精简。除了我说的那些,夸克团队的同学对应用瘦身方面,可否分享一下相关经验?
刘智艺 答:
恩,是的。一般应用瘦身方案针对就这两点,库的精简摘除主要是开发人员纯人力的工作,而资源瘦身是有一定的技巧可寻的,业界常用的一般就是压缩、选取最优格式支持、复用。UC 系列 App 的瘦身工具其实也是应用前端开发常用的雪碧图原理,这里可以提供下历史数据,UC 110M~80M,夸克 26M~24M。对于我们需要兼顾日夜切换和高清显示的业务需求,资源文件的确是包 size 大头。
除了 U4 内核,更抢眼的是轻应用
Linmi 问:
很感谢你的回答。
我回顾一下刚刚夸克团队同学的回答,多次提到了强大高效的内核。那么,这个内核强大高效在哪里?夸克浏览器在应用适配这个内核时,是否有相关踩坑经验可以分享一二?
张惠钧 答:
内核部分是浏览器的核心基础,有很多特性的都离不开它。
我们用的内核跟 UC 是同一套的,都是 U4 内核,这是 UC 在浏览器行业十多年来的经验和技术积累的产物。它强大在哪?从用户的角度直观地说,快速加载网页、深度广告过滤(包括手动标记广告),友好的网页排版(支持适应屏幕,部分网页重排版),出色的视频播放体验等等都离不开内核的支持,当然还有很多其他功能。。
适配内核过程还好,没什么特别的坑。只是由于我们内核有很多自己的特性,所以接口会跟原生的系统内核有差异,这个时候就是考验我们外壳的对接框架层的架构设计了。
当然,夸克能俘获众多用户的喜爱,除了内核的强大,也离不开外壳的支持。用户喜欢的其他特性,如毫秒级的启动速度,丝滑般的操作体验,炫酷的动画与界面,极速的下载速度等等都离不开我们外壳同学的努力。
Linmi 问:
惠钧刚刚有提到外壳的支持,我仔细体验了一下夸克,发现夸克内置相关网站导航,并且对某些网站做了适配,使用起来像是原生应用一样,对这些网站适配是只是单纯挨个站点适配,还有什么相关黑科技?
张惠钧 答:
我猜你说的是我们的轻应用吧,非常有眼光,它是我们夸克2.0改版后的一个新功能;
关于这块,我们并非挨个站点去适配的,确实存在小小的黑科技:
首先,这块我们是跟「轻芒阅读」团队合作的,「轻芒」在这类型的功能已经有十分成熟的技术,跟他们的合作很愉快;
其次,在实现上,我们采用了基于阿里 Weex 改版的 UCWeex 框架搭建,Weex 是一个跨平台的框架,代码写一份即可在 iOS 端和 Android 端双端通用,所以现在轻应用的优化都可以由两个以上的人力缩减到一个人来完成;你们所感受到的原生应用的体验也是在 Weex 框架上就能实现到;
最后,不少人第一次用轻应用的时候,都会误以为这是商业化,是赤裸裸的广告。然而,大家都误会了,上线轻应用,是我们为了让用户有更好的无广告、良好的原生体验所做的尝试,我们所抽选的站点都是我们的用户最常访问的,用户评价最好的一批站点。这个不仅仅不是广告,而且我们还要为这个功能付出一定服务器的费用。当然,目前轻应用功能还没完全成型,我们还会继续探索和完善。
严格遵守规范开发
Linmi 问:
看到惠钧说和外部有相关合作,那团队内部是怎么合作的呢?是否能分享一下夸克团队的工作流程,比如开发中相关规范和工具,团队的 CodeView 是怎么进行的?
轻应用是非商业化功能,那么夸克未来会进行商业变现么?变现方向可否透漏一二?(涉及商业秘密可以不说哈)
顺便提一句:看到轻应用上没有掘金,我现在最想说的就是求加上掘金啊!🙃
张惠钧 答:
跟大部分团队一样,我们也是有自己的一套开发规范,也是 UC 的开发规范,所有代码规范、代码质量、代码提交格式等都是严格遵循规范来走
我们的开发环境还是大家熟悉的 AndroidStudio,版本管理是 Git,CodeView 用的是 Gerrit,文档记录和管理用的是Confluence。
关于商业化变现,大家可以放心。虽然夸克的崛起已然具备了极具潜力的商业价值,平时和会有一些厂商跟我们接触探讨,但可以肯定的是,近阶段商业化不会是我们的重心,目前都没有做商业化功能的计划。可以稍微透露一点,凭借传统的搜索分成,我们目前过得还挺好,所以我们在商业化方面并不急,也绝不会贸然照搬现成的商业化模式,至于到底会怎样,那都是后话了。
PS:轻应用未来肯定加上大掘金的
Linmi 问:
谢谢!
关于代码质量可否简要说一下,作为开发者,对一些大厂内部技术还是想了解一下。
张惠钧 答:
一般情况下,我们提交代码都是需要通过 CodeReview 的,尤其是要发送给模块 Owner 去 Review,只有 Review 通过才能提交;
在平时我们也有很多自动化的测试、性能测试等来监控我们的程序质量;
在发布前,我们会让团队里所有人花上半个小时左右时间去进行众测,大家都需要测试不是自己负责的模块,保证上线前一些明显的问题提前发现并解决;
大概就是这样子~
李志明 答:
关于自动化测试这一块,我补充下:
Android 平台,我们使用 Robolectric+JUnit 的单元测试框架。对于非 UI 相关的代码,比如关键的 Model 或业务逻辑,我们会写单元测试。团队成员 push 代码前,需要自己执行所有的单元测试(通过执行一个脚本),确保所有单元测试 case 通过,才可以 push 代码。另外,主线的每一次代码提交都会自动触发服务器执行单元测试,如果单元测试的 case 不通过,代码提交人和开发团队会收到邮件报警。
将通过掘金专栏对外输出
Linmi 问:
自动化开发的确省时省力,这时候我想到了夸克团队内已经有相关成熟体系了。那夸克团队是否有对外输出,对技术输出态度是什么样?比如怎么看待开源,是否鼓励团队对外输出开源项目?
李志明 答:
我们从开源的技术获得了很多,比如刚刚说的 Robolectric,以及我们用来实现Doodle的 Lottie. 我们也很乐意能反哺开源社区。但目前我们面临的一个问题是团队精力不够。开源的技术文档、维护是比较耗时间和精力的。所以短期没有打算。但长期,当我们团队有一定的时间富余后,我们希望能做这个事情。目前,我们还是专注于做好产品,还有很多用户反馈的问题待解决。虽然比起同类产品,夸克很出色,但离我们心中完美的浏览器还有大段的距离。但是一些技术分享的事情,我们已经筹划在做了。比如,在贵平台上发专栏的技术文章(夸克浏览器技术团队掘金专栏),希望跟掘金的读者多交流~
王者荣耀五黑缺人,疯狂招聘中
Linmi 问:
哈哈,很开心夸克浏览器的小伙伴能来掘金这个技术平台做输出,欢迎!
聊完技术话题,那我们聊聊夸克团队生活作为结尾,比如夸克团队业余时间都在做些什么?团队的福利,团队的激励措施等等…..
李志明 答:
团队的业余时间聊得最多的是技术和创意。我们经常在周五下午周会的时候,带上一大堆零食,由某个成员作主题分享,或大家一起讨论技术和创意。一些好的创意和技术会用在我们的产品上或申请专利。午饭后,爱好王者的同学也会开黑。以前常常在会议室跟其他团队55开黑,现在集体开黑就比较少了,因为有些人弃坑了,也有些人迷上了吃鸡。团队和公司的福利主要是团队活动,比如集体看电影、吃饭、年度旅游。团队的激励有松果奖、战功奖、年终奖。申请专利也会有专利奖金。
看来,夸克浏览器不仅手握 U4 内核这个积累多年的利器,还有一队追求极致的工程师。不光从产品功能上兼济天下,更从团队内部开始,用技术「兼济天下」。

恰好,夸克在招 iOS 研发,寻找技术和产品都追求极致的同道中人,有意者都请把简历发到 quark-dev@alibaba-inc.com。 另外,夸克所在的阿里巴巴移动事业群(UC)正在招兵买马→UC招聘。掘金的同学们直接砸简历吧!
掘金专访的目的是帮助大家了解不同的开发团队,通过简单的问题一窥各公司的技术氛围、研发体系和团队风气。如果您有想了解的开发团队,或者您所在的开发团队想与社区有更广泛的交流。欢迎联系 YoungZ。微信:sunmatter