造物者之吻:中国手机“爆改安卓”的这些年
如果我们把时间倒回去智能手机刚兴起的那几年,回到iPhone早先几代的时候。不知道大家是不是还记得这样一个画面?用苹果的朋友会对安卓用户说,安卓那么卡,我实在不知道怎么用。
那时候,苹果还频繁地与肾这个器官联系在一起,安卓手机相对高端点的还是HTC和三星,魅族和小米才崭露头角。而安卓必然会变卡顿和缓慢,似乎是个常识问题。为了解决这个它,网上流传着各种安卓刷机教程、一大堆清理内存的APP,以及无数《教你让安卓不卡的10个绝招》这样的文章。
沧海桑田,不过因循几年。
让我们回味一下今天,身边还有因为安卓卡顿而坚持不用安卓的吗?即使偶尔有人发出这种声音,似乎也马上会被朋友回怼过去“你几年不用国产手机了”?反而知乎和B站上,流传着的是“给美国人安利EMUI”这样的故事。
不经意间,我们似乎已经习惯了国产手机的高端定位,也很少有人还觉得安卓用几个月就会卡到不能开机。
但这一切到底是怎么发生的,可能大多数时候我们没空回头仔细琢磨。事实上,从移动终端格局初现,中国手机群落就一刻也没有停止过对安卓的优化和改进。直至今天,我们会发现中国用户享受的移动终端体验,几乎已经变成了“另一个物种”。
而这条“造物之路”并不好走。回顾这些年中国手机对安卓的一路“追打”,我们或许会惊觉,原来这些年手机厂商、开发者和万千用户一起,完成了一件有点了不起的事情。
安卓的功也过也
原生安卓的卡顿问题,是前些年移动互联网刚兴起时,硬件圈讨论最多的话题。但是开始回顾故事前,还是有必要再归纳一下安卓从诞生第一秒起就注定的是非功过。
2003年10月,Andy Rubin等人创建了安卓公司。从最开始,这个项目就是希望在Linux基础上打造一个有利于极客们随意开发的OS系统。
2005年,谷歌收购了刚刚成立22个月的安卓,并在此后完成了这一项目的持续优化与多边测试。2007年,谷歌以Apache免费开源许可证的授权方式,发布了安卓源代码。2008年,在苹果正式改称IOS之后几个月,对外发布了安卓1.0版本。
移动终端最终只留下了iOS和安卓,有人认为这是因为两个系统恰恰走向了两个极端。与iOS一切都被框定,只能严格按照苹果的规矩来做开发不同,安卓的最强优势就是它超强的灵活性与适应能力。
它能适应最低端的手机配置;把所有路径对外开放,哪怕一个网页都能安装应用;简单的安卓开发,近乎可以速成。
客观来说正是这些特质,才使得智能手机兴起之初,大量的手机厂商、应用开发者、互联网创业者,以及大多数不想卖肾换手机的用户,能够进入智能移动终端这个新世界。
但是成也开放,病也开放。安卓就像修建了一座足够广阔的城市,但是从设计之初就没打算在城市里安置任何市政管理系统。车随便进,人随便住,垃圾随便堆,最终导致了安卓广为诟病的“必卡”问题。
综合来看,从技术规则上有三件事决定了安卓一直为人诟病的缓慢和卡顿:1无节制开放的应用接口,导致安卓更可能加载垃圾软件;2每个应用的缓存文件都在安卓系统中进行堆积,造成系统会越用越卡顿;3安卓执行Java代码,采用的虚拟机转换机制,导致应用的运行速度缓慢。
这三个“原罪”式的问题,虽然在安卓的历次更新中得到了大幅度缓解,但在本质上并没有解决。
好在这不是安卓故事的终点,而是中国软件工作者的起点。
开启中国式交互
虽然安卓的卡顿问题从来都是“第一黑点”,但中国开发者对安卓做的第一件事并不是解决卡顿,而是改变交互。
客观来说,谷歌发布的原生安卓是有自己的交互理解和审美设计的,然而其确实更加符合欧美用户一贯的审美体验。另一个安卓的问题在于,中国用户是连接不上大量谷歌服务的。手机厂商必须给微信、淘宝、O2O这类“中国式移动服务”安排好入口。
于是从2010年开始,手机厂商陆续踏上了深度定制安卓交互的道路。其中最有名的商业案例,是从MIUI起家的小米。MIUI率先取消了安卓的应用抽屉设计,将其改为类似iOS的桌面平铺设计。搭配简练精美的设计语言,奠定了中国用户独特的安卓习惯和交互审美理解。
当然,中国手机改变安卓交互也不是只有MIUI一种模式,比如主打海外市场的一加,就采取了尽量贴合原生安卓设计的定制模式。此后,深度定制的UI系统开始成为安卓阵营国产手机的标配,让国产手机从系统外观上就变成了独立的物种。
这可能是大部分用户都能直观感觉到的安卓变迁史。但在这之后,国产手机“爆改安卓”之路开始走向了关键问题——卡顿,终究是用户体验的死敌。
华为的深层行动
如果说,安卓手机在中国市场的崛起,与改造交互设计密不可分。那么华为的近几年的强势崛起和走向高端化,则始终伴随着另一条主线:对安卓进行系统级的深层改造。
这个行动开启于2016年,伴随着Mate 9发布的EMUI 5.0中,有一个十分直接的能力,叫做“天生快一生快”。当时华为为此给出了一个著名的承诺:安卓18个月不卡顿。
上文已经说过,安卓的卡顿主要来自各个应用会带来大量碎片化文件。由于安卓是直接架构在Linux基础上的,其文件系统在最初并没有考虑碎片文件的快速回收。而安卓又可以随意安装应用,这就导致每个应用的缓存、副本都会产生大量文件碎片,最终把文件系统堵死,造成卡顿,这也就是那几年我们已经习惯要经常清理文件碎片的原因。
这是当时安卓最大的槽点,也是华为在开启高端化战略时,必须在基础软件层面解决的首要问题。最终华为的解决方案,是把安卓原生的文件系统,由EXT格式换成F2FS格式,从而使手机可以极大程度上避免文件碎片。
F2FS格式最开始是三星一位技术人员发明并开源的,但是出于各种原因,三星并没有敢于直接替换安卓的文件系统。而这个好比器官移植的“安卓手术”,却在华为数百人团队的努力下,在中国做成了。
最终结果,是从EMUI 5.0开始,用户就可以不再手动清理碎片文件。当年我们习以为常的动作,如今已经成了可笑的往事。
吃了一次“深度改动安卓”甜头之后,华为又屡次对安卓“下手”。比如去年我们非常熟悉的两个turbo。GPU turbo在安卓的图形中间件、内存管理、进程管理上进行了一系列优化;而Link turbo,改动了安卓的通信模块、连接模块。
至此,华为对安卓的优化应该说已经走到了相当深层的位置。而从P30系列发布以来,众多开发者开始关注一个新名词:方舟编译器。
它之所以引发了滔滔江水般的讨论,原因在于编译器这东西,已经不仅是在修改安卓某一部分,而是直接作用于安卓的底层规则。
从特性到规则:方舟编译器触发了什么?
大部分消费者可能不知道的是,安卓会卡和安卓会慢,其实还不是一件事。
即使文件垃圾并没有堆满安卓的“仓库”,我们也依然会觉得安卓打开复杂的APP或者同时加载大量文件时,反应效率明显不如iOS。
这个问题的原因,就在于上面所说的,安卓系统在执行Java指令的时候,需要进行虚拟机转换。所谓虚拟机,可以理解为程序员所用语言,与安卓理解的机器语言之间存在着一层翻译。翻译当然也没有什么不好,但是如果在启动应用的同时进行翻译,那显然就会浪费众多时间。这就好比两人聊天时,加一位翻译问题不大。但如果在足球比赛里,两名球员要通过场边的翻译进行传话,那就什么配合都甭想了。
既然虚拟机机制如此浪费时间,为什么还要用它呢?答案在于安卓是应用Java语言开发的,而为了让开发更方便,Java在最初设计时就加入了一层虚拟机设置。无论在什么硬件上进行的编程,最后统一打到虚拟机去处理,这样就让开发者有了很好的适配灵活性。
但是这个设置,如果是在争分夺秒的手机体验中,一遍翻译一遍执行的模式,就会变得异常累赘。尤其是今天的安卓应用,实际上往往是Java和C语言混合开发,两种语言在执行层相互转换,又会浪费大量的时间。
这个看似两难的问题,解决思路其实非常“简单粗暴”。华为给出的答案是,可以直接在开发层,通过编译器把应用直接转成机器码。咱们干脆把虚拟机扔掉就完了。
事实上,谷歌也早就意识到了安卓这个层面的问题,在安装5.0之后,已经针对编译做了很多优化,但依旧存在不少问题。而方舟编译器,则从基础规则上解决了转码的负担,让安卓系统的流畅度提升了24%,让EMUI 9.1在流畅度层面丝毫不逊于iOS。
这个改变听上去很轻松,有种“一招毙敌”的爽快感。然而底层编译器却是软件层面最复杂的工作之一。为了能够真正在“安卓的灵魂处动刀”,华为从09年就开始准备,2013年就开发了自研编译器HCC。2014年,华为以“多顾茅庐”之势,请来了编译器领域世界最著名专家之一Fred Chow,担任华为编译器技术首席科学家。坊间流传,全球能在底层改动安卓的人不到五个,而Fred Chow是其中之一。
就这样,华为2012实验室加上软件工程部的数百位研发人员的漫漫十年征程,最终换来了将要开源给全球开发者的方舟编译器。
故事到这里,某种程度上来说中国的软件开发者们,已经不仅仅是安卓的使用者,而是它的造物者。
当然,故事并不打算就此结束。
今天是终点吗?
华为消费者BG软件部总裁王成录博士认为,优化安卓依旧没有结束。
而下一步,或许将是开发者可以跳过中间层,直接将应用连接于安卓底层库,实现极简的个性化开发。
在手机市场的“后半场”,越来越少看到“巧计取胜”的案例。而留下的,更多是技术深度和技术壁垒。
围绕安卓这条线,华为为代表的国产手机,接下来至少要做两件事:一是继续深化对安卓的优化改造,甚至通过大量技术贡献反向影响安卓的大版本更新,成为主航道的制定者;二是绕开安卓“必须适配每一台手机”的特性,在其他赛道上做出差异化升级。今天来看,这种升级主要围绕三个方向发生:云端一体化体验、AI功能和泛IoT联接。
而对于华为这样的大玩家来说,更进一步的题中应有之义,是通过从OS层到基础软件,再到芯片架构,在每一层都拥有足够的自主话语权,叠加在一起构成了华为未来围绕移动终端,可以打出新的战略可能性——在华为将目标定为全球顶端的时候,这是一条必须修筑的道路。
今天我们很可能会忽略,安卓这个词其实跟AI有密不可分的关系。1886年,法国作家维里耶德利尔·亚当在其创作的小说《未来夏娃》里,给外表像人的机器人女孩起名叫做Android。
书中“安卓”经历了一次次蜕变,最终接近于男主人公梦中情人的样子。
显然,过去被冠以“穷人才用安卓”的操作系统,实在不像书中的安卓小姐。好在就像书中的情节一样,安卓在现实里也没有停止进化。它过去不如人意,未必将来也是如此。
就像曾经中国在操作系统上是失语的,但未必将来也是如此。若干年过去,华为已经成为了世界上为安卓贡献最多的开发者之一,未来,谁又知道呢?
安卓女士自机器之梦中醒来,会源于造物者的亲吻。