正在阅读:卡顿崩溃怪谁?浅析为何安卓App质量不高卡顿崩溃怪谁?浅析为何安卓App质量不高

2013-08-01 15:37 出处:PConline原创 作者:Aimo 责任编辑:censi

  大部分App仍使用Java开发

  “安卓基于Java”、“安卓App使用Java开发”这类的观点见得很多,但实际上这种说法有失偏颇。Google很早就发布了安卓NDK(Native Development Kit,原生开发套件),开发者可在NDK中使用C语言编写安卓App。

安卓App质量 Holo
使用NDK开发安卓App,效率会大为提高

  在NDK中使用C语言编写安卓App的好处是显而易见的,就是性能大为提高。性能提高有多高?三四层楼那么高啦。在性能测试软件CF-Bench中,基于NDK的性能是基于SDK(也就是使用Java的开发套件)的三倍以上,十分惊人。可以说,只有使用NDK,才能最大程度发挥安卓机的性能。

安卓App质量 Holo
NDK编写的安卓App速度远比SDK编写的快

  NDK好处多多,但到了开发者那里就不怎么受待见了。首先,和SDK相比,NDK能做的东西有限,程序员难以在NDK中用纯C开发一款安卓App,到头来还是得用Java去实现一些功能,这增添了安卓的开发难度。其次,使用NDK开发的安卓App兼容性往往不如在SDK中用Java编写的安卓App好,毕竟SDK写的App有Davilk虚拟机支持,不需要直接和硬件对话。目前安卓硬件百花缭乱,ARM厂商就十几个,之上还有ARM和X86两大阵营,用SDK的确是更明智的选择。

安卓App质量 Holo
移动市场分为ARM和X86两大硬件阵营,ARM中又有N家制造商,比七国还乱

  使用Java开发安卓App固然方便,但也容易拉低安卓App质量。虽说安卓系统利用Davilk虚拟机运行Java,比非智能平台的JVM效率高得多,但始终没法和NDK相比,你怪安卓的App慢,这份怨念很大一部分得喂给Java吃。Java自带内存回收机制,所以开发者使用Java写安卓App时往往不注意控制内存泄漏(特别是一些小软件),当其进程超过Davilk虚拟机分配的阀值后,就会被系统杀掉释放内存,这样一来就有可能造成App的崩溃、系统的假死等情况。

安卓App质量 Holo
并不是说Java不能编写出精品App,但Java的确容易造成问题

  总的来说,安卓上并不是没有高效的代码,但碎片化的硬件让开发者们很少考虑NDK,容易造成问题的Java仍被广泛使用。那么什么安卓App最常使用NDK开发呢?答案是大型游戏。反正纹理数据包都要针对硬件匹配,也不差在主程序省力气了,更何况游戏对代码效率要求很高。如果你看到同一个游戏的安卓版本比iOS版卡顿,往往因为安卓机硬件太低——iOS设备的图形性能比安卓机高太多了。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品