在 《如果非要较真,Android的“底层”到底在哪?》一文中,雷锋网记者粗略介绍了真正意义上的Android底层所谓何物,同时也指出手机厂商在宣扬“底层优化”时,在这方面的举步维艰。
其实话说回来,无论手机厂商具不具备在Android最底层做优化的能力,如果它们下定决心要改变用户对Android手机卡、慢、热的印象,很多优化工作并没有想象中那么“深”。
Android手机的卡、慢、发热、死机是一个被简化的事实,完整的描述应该为:用过很长一段时间后,手上的iPhone还是那台iPhone,而Android手机已经“步履蹒跚”。
凡事都怕对比,Android手机的问题究竟出在哪里?魅族软件工程师吴章金从两个维度分析了成因。首先,当手机硬件原地不动软件不断升级时原因如下:
1、手机存储芯片随着使用自然变慢;
2、硬件老化和各种跌落导致零件损坏;
3、器件和触点老化导致手机能耗增加,发热以后会触发系统温控,从而引起cpu降频导致系统变慢;
4、新版本固件没有相当的研发和测试投入,优化不到位;
5、几乎每一个版本都耗费更多的资源(更多的是内存与flash)
必须说明的是,这些问题并非Android手机独有,相信那些有iPhone 4情结的用户对此应该深有体会。当然,Android手机特殊的地方在于它软件升级的速度更快,各家ROM每周一更已是常态。
另一方面,即使有用户深谙此道,买了手机之后再不更新固件,Android手机就能在使用中尽可能保持原貌吗?答案是否定的,原因如下:
1、后台软件运行得越来越多,默认负载不断加大,空闲处理器资源减少;
2、后台应用的叠加,内存耗费逐步增加,导致空闲内存下降(新任务启动甚至老的任务回到前台需要内存资源时可能需要触发zram swap或者lowmemkiller,这些都会不可避免的带来延迟,而一旦有持续的内存泄露,甚至无法回收内存而会导致系统最后崩溃);
3、当后台驻留应用泛滥后,随着内存耗费的增加,内存的碎片化会很严重(就是物理连续的内存会越来越少,这会引起严重的IO性能衰退,可能会导致IO从顺序操作转变为随机操作);
4、应用增多导致系统更容易发热,触发系统温控,从而引起降频等动作;
5、部分温控技术引入了降fps(刷新率),这个会明显影响用户体验感知(当然这也无可厚非,平衡发热和性能一直是硬件固化之后的必由之路)
从以上几点可以看出,除了最后一条是手机厂商在平衡时有意取舍以外,大部分原因还出在不那么克制的第三方应用。用LBE安全大师 CEO 张勇的话说:“这是个长期的猫和老鼠的游戏。”
众所周知,Android给应用开发者的权限非常大,允许自启动,允许常驻后台,允许自动联网,允许实时推送等等。不去揣测Google的设计初衷,从结果上看,这是套仅适用于乌托邦的游戏规则。
周鸿祎在接受媒体采访时表示:“对入选的手机(应用)我们会进行技术评测,不能有BUG,必须要稳定。他们(应用)不能私自上传用户的数据,不能背后偷偷联网,不能私自消耗用户的流量,最重要的不能老是自己唤醒自己,在用户不知情的情况下在后台做很多的工作,最后手机的内存都被这些稀奇古怪的应用给用掉了。”
一席话直奔用户痛点,可介于奇酷手机尚未上市,雷锋网就这些问题采访了曾在LBE做过类似工作的王明杨,他表示安全软件只要通过Root,就能注入到目标程序,从而动态修改它的权限和自启动,目前防止第三方应用“耍流氓”的很多方法都已经成熟。
据张勇表示,手机厂商对应用权限的优化工作主要在系统框架层。而当很多工作都已做到位之后,在手机的后台管理上,“还是有很多灰色地带,比如说手机百度调用百度地图就可能是获取位置信息,但是手机百度调用百度手机卫士可能是拉活。它们从技术上讲都是一样的,只是实际用途不同,导致用户不同的反应。”
技术上无法区分,理论上就只能靠人工审核了,iOS就是这么做的。Android不可能这么做,原因是“这是两个公司(Apple&Google)的设计哲学和思路不同导致的。”张勇说。
另外,除了自启动和后台管理以外,推送机制也是优化的重点关照对象。由于某种原因,Google的Push通道在中国暂时无法使用,所以每一个可以为用户实现“实时通知”的应用,都必须各自保持“长连接慢心跳”的节奏。在这种情况下,即使撇开骚扰不谈,这对智能手机薄弱的电量来说,简直无法承受。
小米的安全总监马骥向雷锋网记者表示,在Google给Android加上定时唤醒之前,MIUI就做了这个优化,就是“把每个应用的唤醒行为hold住,统一到系统指定的时间点来执行。”这样既不会因为简单粗暴的关掉所有程序遗漏消息,也不会对电量造成太大的负担。
Android手机厂商通过各种技术手段,在一定程度上的确能限制应用对权限的滥用,可最终效果仍然很难向iOS看齐。原因很简单:iOS不开放这些权限,Android反之,手机厂商的工作是酌情收回,“酌情”二字涵盖了太多变量。
在谈完某些优化的细节之后,王明杨告诉雷锋网记者,其实Android和iOS差距的本质还不在这些方面,“iOS的程序代码直接跑在CPU上,而Android跑在虚拟机上,因此在同样的硬件配置下,Android执行同一件事情要比iOS耗费更多的资源。”所以在他看来,提升硬件要比底层优化更靠谱一些,而实际上Android手机的硬件更迭速度的确要快很多。
有一件发生在某手机厂商的真实案例非常具有代表性:当几个软件工程师埋头苦干数月,终于将手机的性能优化到令人满意的水平时,元器件升级了,略微提升的硬件成本给手机带来了更好的性能。这时候即使工程师们依旧笃定自己的工作是有价值的,领导层也会出于对投入产出比的衡量,来思考大力投入做这件事的必要性。
吴章金也表示:“就目前国内的情况而言,蛮大的一部分厂商还只是停留在硬件功能的堆砌上。有一些厂商则投入资源做 UI 设计,硬件外观和 ROM 的主题以及各种交互优化。小部分(厂商)在艰难地做基本的稳定性优化,降低系统的死机、崩溃或者重启概率等。”
在这些问题里,当然不是每一个都能在有效期内得到答案,因此“很多产品因为这些问题都难产了。有的产品停留在疲于奔命地解决各种死机重启Bug,极少数在应用诸如 RAS 这样的系统化解决方案。”
无论采取怎样的措施,现如今包括苹果在内的手机厂商明显都加快了节奏,国内某知名手机厂商在谈到自身处境时更是表示,现在的竞争环境是“要么快,要么死”,所以很多优化工作依旧跟不上被口号催生的需求。
唯一值得肯定的是,就目前一线水准的Android手机而言,无论是对第三方应用的管理还是自己对软硬结合的理解都在日趋完善,它们与iPhone的差距也已经远比人们印象中要缩小很多。只不过在马太效应持续升温的今天,兑现“底层优化”的承诺要比想象中更加紧急。