让软件成为华为手机的硬实力
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 团队成立了专门的 "特战组" 集中攻关. 特战组详细分析了安卓系统下四百多台几十种机型的手机, 经过反复的问题重现和软硬件的全栈分析, 共发现以下四个导致卡顿, 死机的主因:
1. 安卓系统的松散管理, 应用对资源的使用缺少规则, 就像建了很多道路却没有交通规则, 最终是拥塞和混乱;
2. 系统硬件资源协同缺乏, 仅仅靠增加 RAM(运行内存)资源不能解决问题, 而是要更有效地调度与使用资源;
3. 存储碎片累积效应, 随着使用时间的增加, 存储碎片化日益严重, 数据读写速度明显下降, 系统卡顿频繁, 加重;
4. App 膨胀严重, 特别是头部应用功能不断堆积, 导致产生的数据急剧增长, 抢占系统资源严重, 拖累系统运行速度.
这些问题, 几乎涉及到从芯片到软件全栈, 如果只是见招拆招被动应对, 是不可能真正解决问题的. 必须全面系统分析, 才能拿出全面彻底的解决方案. 但安卓系统本身极其庞大, 代码行数过亿, 在这么庞大的系统上 "动手术", 挑战可想而知. 会不会在优化的同时导致其它兼容性的问题? 有没有足够能力实现预定的目标?
但是, 带着有问题的引擎勉强飞行, 只会酿成更大的事故. 畏缩不前不如放手一搏. 通过大量细致的分析和研判, 我们决心破釜沉舟 -- 干! 最终, 经过专家的反复诊断和讨论, 拿出了 5 大 "药方" 来一一解决上述问题.
简单来说, 人工智能是核心, 对应用侧智能分析, 判断应用的资源需求特征(计算密集型, RAM 密集型, IO 密集型等); 对硬件资源侧, 感知 CPU, 内存, IO(Input/Output), 存储等资源状态, 通过 AI 算法实现应用需求与硬件资源的最佳匹配, 并及时合理地整理和回收空闲资源, 解决上面提到的硬件资源协同和 App 占用空间过度膨胀的问题.
▲ "天生快 一生快" 系统原理图
"抽屉式" 替换 为安卓注入新的生命力
对于存储碎片化的问题, 我们采取了 一个比较激进的方案 -- 替换了安卓原生文件系统.
安卓从诞生之初就直接架构在 Linux 基础上, 其文件系统最初并未考虑碎片文件的快速整理. 长时间以来, 安卓手机都是从 Linux 继承文件系统, 这个文件系统对智能手机上的 Flash 存储并不友好, 也是碎片化的主因. 我们决定用 F2FS(Flash Friendly File System)文件系统来替换原生的文件系统, 不仅因为 F2FS 是为 Flash 量身定做, 还因为它可以使手机极大程度上避免文件碎片.
F2FS 是由友商 S 公司原创并开源的. 但 S 公司自己并没有率先使用. 因为文件系统决定存储上所有文件的存储与访问方式, 好比器官移植手术, 替换文件系统的复杂度和风险是巨大的.
我们虽然在实验室仔细验证了半年多, 但替换文件系统的高复杂度和高风险, 仍然是决策的最大顾虑. 软件管理团队和技术团队多次分析后, 最终果断拍板, 并和 CBG 签订了军令状, 承诺搞不定或出了问题就 "军法处置".
得益于团队胆大心细的执行力, F2FS 文件系统最终替换成功, 成为解决卡顿顽疾全方案中最重要的组成部分.
2016 年, 伴随着 Mate 9 系列发布的 EMUI5.0, 我们为这个解决安卓卡顿的方案取了一个简单易懂的名字, 叫做 "天生快 一生快" , 同时承诺消费者 "18 个月不卡顿" , 这个当时看似 "吹牛" 的承诺, 今天已经成为现实. 从市场反应和消费者反馈来看, 在安卓阵营里, 华为手机率先甩掉了 "卡顿" 的帽子.
2018 年, 谷歌将 F2FS 吸收到安卓原生版本中, 所有安卓厂商因此受益, 对安卓生态是很有价值的贡献. 至今, 谷歌的自研手机 Pixel 3 也使用了 F2FS 文件系统.
基于理性的技术判断和果断决策, 让我们领先了所有安卓厂商一步. 更难能可贵的是, 为了实现安全替换, 逼迫我们的团队没有退路地仔细分析了原生系统的底层, 边战边练, 让我们的团队积累了非常宝贵的经验, 也尝到了深度优化安卓的甜头.
第一道考题, 我和软件团队初步获得了 CBG 管理团队的信任, 有了一个好的起点.
走向生态协同的 "深水区"
在解决卡顿这个顽疾的过程中, 我们就发现安卓生态的松散是一个挑战, 这并不能通过技术来解决, 但又和用户体验息息相关.
相较于 iOS 对生态的严格管控, 安卓生态主要依赖玩家的自律自觉. 打个不恰当的比方, 安卓原生系统好比谷歌修好的一条高速公路, 谷歌设想上路的自然是遵守交通规则的机动车, 而实际情况却是, 不但机动车上路了, 各种牛车, 马车, 三轮车和行人都来了, 加上没有交警 (优先级调度系统) 负责管理, 拥堵就成了常态.
这种状况在国内尤甚. 手机厂家不断投入的技术, 只是把端侧的运行环境做得越来越高效, 整洁. 但应用市场的鱼龙混杂对用户体验影响巨大, 各安卓手机厂家不仅拥有自家的应用市场, 还有种类繁多的第三方应用市场, 再加上通过浏览器链接就能下载安装 App, 还有各种木马 App, 恶意软件, 互相引导安装, 伪装后台, 无限制申请手机系统资源等, 带来的问题就是 Apps 对安卓系统资源的使用极不规范, 甚至是恶意使用.
"病从口入", 导致的结果就是, 用户体验不断受损.
华为面临一个选择, 是随大流, 还是牵头竖起大旗, 联合重量级生态玩家, 逐步规范, 净化安卓生态, 把优质的体验还给消费者?
仅仅依靠手机厂家自身的持续技术投入和优化已然不够, 走向生态协同的 "深水区" 是华为终端软件必须要迈出的一步.
来源: http://www.tuicool.com/articles/JfQBFzE