去年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 大头。
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