华为心声社区在5月16日发布了一篇《华为手机操作系统往事》的文章,并且17日被余承东转发到微信朋友圈,并评论“除了自己的芯片,还有操作系统的核心能力打造”。在《华为手机操作系统往事》的文章中,CBG软件部总裁王成录在文章中讲述了让软件成为华为手机的硬实力心路历程,特别是他们刚刚发布的“华为方舟编译器”。
王成录表示,编译器是将程序开发用的高级语言转换成机器指令的软件,可以理解成软件与硬件之间的桥梁。那方舟编译器会带来怎样的价值?简单点说,是解决现有安卓这座桥梁并不顺畅的顽疾,是对安卓深度的优化与革新。
王成录表示,而这只是华为一系列软件创新的最新成果。今天,从市场与用户的反馈来看,越来越多的消费者认可华为手机长期使用后依然流畅,对用华为手机玩游戏体验不佳的吐槽也越来越少。这既归功于华为手机芯片和硬件能力的快速提升,更离不开软件全栈的深度优化与技术创新。
下面是《华为手机操作系统往事》全文:
4月11日,CBG总裁余承东在上海发布了P30系列手机。发布会后,一个听上去有点晦涩的新名词——“方舟编译器”迅速登上了知乎社区的热搜榜,引发了IT从业者、数码博主、资深码农乃至普通消费者的极大关注和广泛热议。“编译器是什么?”“华为方舟编译器和安卓原生的AOT/JIT(Ahead of Time/Just in Time)有什么区别?” “方舟编译器对安卓生态有何意义?”等,网友对各种深浅不一问题的讨论不亦乐乎,诸多跟帖评论精彩纷呈,不得不说高手在民间。
其中一位网友的评论很有代表性:“昨天的华为发布会,让我感到惊喜的是,在如今这个年代,会有一家国内消费电子公司把编译器作为一大亮点来介绍。华为在基础研发上的持续高投入,加上手机终端市场占有率向全球第一迈进,使得‘自建生态’的梦想,对一家中国公司而言首次成为可能。”
编译器是将程序开发用的高级语言转换成机器指令的软件,可以理解成软件与硬件之间的桥梁。那方舟编译器会带来怎样的价值?简单点说,是解决现有安卓这座桥梁并不顺畅的顽疾,是对安卓真正深度的优化与革新,可以说为安卓产业注入了新的生命力。
而这只是华为一系列软件创新的最新成果。今天,从市场与用户的反馈来看,越来越多的消费者认可华为手机长期使用后依然流畅,对用华为手机玩游戏体验不佳的吐槽也越来越少。这既归功于华为手机芯片和硬件能力的快速提升,更离不开软件全栈的深度优化与技术创新。
我们深知,任何软硬件的技术优化和创新探索都必须瞄准用户体验。服务近5亿在网用户的华为手机操作系统EMUI是如何围绕用户体验,不断进行深层创新,推出硬核技术的?
故事还得从几年前说起。
面向消费者的软件怎么做
3年前,我在负责2012实验室的中央软件院,7月份,余总的一个电话,让我有机会来到CBG负责终端软件的研发工作。当时的心情既兴奋又忐忑。兴奋在于,从进公司伊始,我一直从事和软件紧密相关的工作。在我心目中,完成大规模工业化的软件研发,不啻以虚拟世界的0和1为建筑材料,去设计建造一座宏伟的殿堂。而如何能让我们的建造成果和过程都达到世界级,给我们的用户和合作伙伴带来价值,一直是我的追求与梦想。
忐忑也随之而来。虽然都是软件研发,但是智能手机操作系统对于我是一个全新的领域。首先是标准化程度大不相同,电信设备软件有非常完备的行业标准,ITU、3GPP、IETF等,实际上把网络架构和网元架构标准化了。研发需要做的就是根据标准协议,遵从一定的开发流程规范,比如IPD(集成产品开发),以及合理的项目管理来实现相应的交付目标。同时,电信设备软件的需求也是相对清晰和汇聚的,全球几百家运营商的需求百分之七十以上几乎是一致的,而且设备的日常维护主体是经过专业化训练,具有相当技术水平的运维人员,可以相对清晰准确地反馈设备使用中的各种问题。
而面向消费者的软件则大为不同。广泛流行的智能手机操作系统最终只留下了iOS和安卓。与封闭的iOS框定一切来保证体验不同,安卓是由谷歌主导的AOSP社区开源,但原生安卓实际上是Design Reference(设计参考),具体到每一个功能如何取舍和扩展,与海量的第三方APPs如何交互,并没有详细而统一的标准可以遵从,都是各个手机厂家根据自己的硬件平台、产品定位和目标用户群,做大量的适配和优化修改,生态碎片化严重。一切只能以消费者体验为准绳。
在安卓开放的大环境下,怎么做才能实现最好的用户体验?在iOS已经通过多年的积累树立了牢固的领先形象时,怎样才能让EMUI被越来越多的消费者认可,是我和整个软件团队面临的最大挑战。
聚焦最大的用户痛点 “在飞行中换引擎”
我们决定将“用户体验最佳”作为终端软件追求的目标。而首要解决的问题就是,什么最影响用户体验?经过大量的调查和访谈,团队很快发现,最为安卓用户诟病的,是长期使用后的卡顿,这也是影响消费者体验的第一大障碍。
一个热爱电子产品的同事和我讲述过他的智能手机使用经历。在安卓手机进入大屏年代后,2013年他购买了当时做得最好的安卓手机S和H,用的还是顶级配置,但用了一年多后,即使每晚不做任何操作,都会消耗百分之十几的电量;更让他无法忍受的是,卡顿、死机几乎成了家常便饭,必须要不断重启和清理内存才能勉强使用。用他的话说,不是我在用手机,而是手机在用我。
为什么即便拥有很高的硬件配置,即便是当时最好的安卓手机,也会面临更多的稳定性和流畅性问题?是哪些因素导致了长期使用后的卡顿和死机?我们决定“啃”下卡顿这个最大的硬骨头。EMUI团队成立了专门的“特战组”集中攻关。特战组详细分析了安卓系统下四百多台几十种机型的手机,经过反复的问题重现和软硬件的全栈分析,共发现以下四个导致卡顿、死机的主因:
安卓系统的松散管理,应用对资源的使用缺少规则,就像建了很多道路却没有交通规则,最终是拥塞和混乱;
系统硬件资源协同缺乏,仅仅靠增加RAM(运行内存)资源不能解决问题,而是要更有效地调度与使用资源;
存储碎片累积效应,随着使用时间的增加,存储碎片化日益严重,数据读写速度明显下降,系统卡顿频繁、加重;
APP膨胀严重,特别是头部应用功能不断堆积,导致产生的数据急剧增长,抢占系统资源严重,拖累系统运行速度。
这些问题,几乎涉及到从芯片到软件全栈,如果只是见招拆招被动应对,是不可能真正解决问题的。必须全面系统分析,才能拿出全面彻底的解决方案。但安卓系统本身极其庞大,代码行数过亿,在这么庞大的系统上“动手术”,挑战可想而知。会不会在优化的同时导致其它兼容性的问题?有没有足够能力实现预定的目标?
但是,带着有问题的引擎勉强飞行,只会酿成更大的事故。畏缩不前不如放手一搏。通过大量细致的分析和研判,我们决心破釜沉舟——干!最终,经过专家的反复诊断和讨论,拿出了5大“药方”来一一解决上述问题。
简单来说,人工智能是核心,对应用侧智能分析,判断应用的资源需求特征(计算密集型、RAM密集型、IO密集型等);对硬件资源侧,感知CPU、内存、IO(Input/Output)、存储等资源状态,通过AI算法实现应用需求与硬件资源的最佳匹配,并及时合理地整理和回收空闲资源,解决上面提到的硬件资源协同和APP占用空间过度膨胀的问题。
“天生快 一生快”系统原理图