优化Android底层,厂商越努力越纠结?

标签: 特写 | 发表时间:2015-06-30 15:49 | 作者:
出处:http://www.leiphone.com

《如果非要较真,Android的“底层”到底在哪?》一文中,雷锋网记者粗略介绍了真正意义上的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的差距也已经远比人们印象中要缩小很多。只不过在马太效应持续升温的今天,兑现“底层优化”的承诺要比想象中更加紧急。

相关 [优化 android 厂商] 推荐:

优化Android底层,厂商越努力越纠结?

- - 雷锋网
在 《如果非要较真,Android的“底层”到底在哪. 》一文中,雷锋网记者粗略介绍了真正意义上的Android底层所谓何物,同时也指出手机厂商在宣扬“底层优化”时,在这方面的举步维艰. 其实话说回来,无论手机厂商具不具备在Android最底层做优化的能力,如果它们下定决心要改变用户对Android手机卡、慢、热的印象,很多优化工作并没有想象中那么“深”.

Android优化

- - ImportNew
更多网络优化,可参考:  Android网络. http头信息带Cache-Control域 确定缓存过期时间 防止重复请求. 直接用IP直连,不用域名,策略性跟新本地IP列表. – DNS解析过程耗时在百毫秒左右,并且还有可能存在DNS劫持. 图片、JS、CSS等静态资源,采用CDN(当然如果是使用7牛之类的服务就已经给你搭建布置好了).

android 内存优化

- - CSDN博客推荐文章
      内存泄漏引发很多问题:.      1:程序卡顿,响应速度慢(内存占用高时JVM 虚拟机会频繁出发GC).      2:莫名其妙消失. ANDROID 内存面临的问题.   1: 有限的堆内存,原始只有16M.   2:内存大小消耗等根据设备,操作系统等级,尺寸的不同而不同.   4:支持后台多任务处理.

Android 性能优化

- - CSDN博客综合推荐文章
如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来. 当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能. 我们可以使用IntentService,当后台任务执行结束后会自动停止,避免了Service的内存泄漏.

Google是怎样控制Android厂商的?

- - PingWest中文网
Google出售摩托罗拉移动,预示着他们放弃了走“软硬件结合”的道路. 这意味着,OEM厂商们将会继续充当Android系统最重要的“分发者”. 为了防止厂商任意“阉割”自己的服务和应用,Google出台了一套Google应用授权协议对厂商进行限制. Google能那么做的原因是,尽管Android仍然是开源的,但包括Play商店、Gmail、Google地图、Google Play Services等在内的Google应用并不是.

android 之如何优化 ListView

- - CSDN博客推荐文章
众所周知,在开发过程中,ListView的优化是比较重要的. ListView的提升效率,其实就是在于adapter中getView方法的优化,那么如何使的getView优化呢. 1、在getView() 中重用了convertView,很大程度上的减少了内存的消耗. 通过判断convertView是否为null,.

Android性能优化典范

- - 移动开发 - ITeye博客
2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App. 课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议. 主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.

Android-性能优化-内存优化

- - CSDN博客移动开发推荐文章
Android-性能优化-内存优化. 详见: JVM 内存分配机制. 详见: JVM 垃圾回收机制. Dalvik 虚拟机(DVM)是 Android 系统在 java虚拟机(JVM)基础上优化得到的,DVM 是基于寄存器的,而 JVM 是基于栈的,由于寄存器高效快速的特性,DVM 的性能相比 JVM 更好.

Android 升级服务,哪家厂商做得最好?

- Yuancheng - 爱范儿 · Beats of Bits
选择了 Android 系统的智能手机用户,有时会陷入一个怪圈——既期待着 Google 发布新版本,带来激动人心的新功能,又因为厂商漫长的升级过程(甚至不升级)而失望. 在去年,Android 最“主流”的版本是 2.2 Froyo,它从 2010 年 6 月发布,然后各大厂商就宣布提供升级服务——有些机型在几天之内就完成了升级,有些机型等了几个星期或几个月,还有些机型仍在等待中.

Avast收购安全厂商 直接进入Android安全市场

- 洞箫 - cnBeta.COM
流行的安全套件制造商Avast今日宣布收购手机安全公司ITAgents,这间公司一直在研发Android和Symbian安全应用,主要用于数据保护并提供丢失设备的短信远程控制等功能. Avast没有透露收购价格,因为这两者都是私人持有的公司,因此没有公开的义务.