发布时间:2019-08-03 13:19:41
去掉标题栏,你猜猜哪个是微信的iOS版,哪个是安卓版?
随着时代的发展,国内安卓机的系统也在慢慢更新,现在出炉的机器安卓版本最低也是4.0了。安卓4.×逐渐普及后,国产安卓App由于开发历史悠久,惯 性使然,依然没有跟进Holo规范——推倒重做多心疼。因此,国内的安卓App很难享受到新系统带来的好处,如GPU加速等,这让很多人抱怨为啥都黄油计 划了App还是这么卡。而大量高分辨率安卓机的出现进一步让这些使用旧版开放工具开发的安卓App的缺点暴露无遗,素材被拉伸变模糊,而按钮的布局也变得 不适合在大屏幕上操作——想想长了5寸大屏的iPhone吧,你一定点不到后退按钮的。
iOS应用的布局在4寸屏的iPhone5中仍难以点到按钮,何况在5寸屏安卓机
总的来说,安卓App质量不高很大一个原因就是没有按照Google的Holo设计规范编写,这在国内又尤为明显。你问为啥国外的App会广泛使用 Holo规范?那是安卓机在安卓4.0发布前在国外并不怎么好卖,安卓4.0和Holo规范发布后安卓开始在市场一次次爆发小宇宙,国外软件商才开始重 视,自然也会选择用Holo写App了。再加之Google在国外的影响力大得多,谁都知道自己的安卓App长得像iOS的话,Google是没可能把它 摆在Play商店的推荐位的——在南韩挂北韩国旗不是作死么。
大部分App仍使用Java开发
“安卓基于Java”、“安卓App使用Java开发”这类的观点见得很多,但实际上这种说法有失偏颇。Google很早就发布了安卓NDK(Native Development Kit,原生开发套件),开发者可在NDK中使用C语言编写安卓App。
使用NDK开发安卓App,效率会大为提高
在NDK中使用C语言编写安卓App的好处是显而易见的,就是性能大为提高。性能提高有多高?三四层楼那么高啦。在性能测试软件CF-Bench中,基 于NDK的性能是基于SDK(也就是使用Java的开发套件)的三倍以上,十分惊人。可以说,只有使用NDK,才能最大程度发挥安卓机的性能。
NDK编写的安卓App速度远比SDK编写的快
NDK好处多多,但到了开发者那里就不怎么受待见了。首先,和SDK相比,NDK能做的东西有限,程序员难以在NDK中用纯C开发一款安卓App,到头 来还是得用Java去实现一些功能,这增添了安卓的开发难度。其次,使用NDK开发的安卓App兼容性往往不如在SDK中用Java编写的安卓App好, 毕竟SDK写的App有Davilk虚拟机支持,不需要直接和硬件对话。目前安卓硬件百花缭乱,ARM厂商就十几个,之上还有ARM和X86两大阵营,用 SDK的确是更明智的选择。
移动市场分为ARM和X86两大硬件阵营,ARM中又有N家制造商,比七国还乱
使用Java开发安卓App固然方便,但也容易拉低安卓App质量。虽说安卓系统利用Davilk虚拟机运行Java,比非智能平台的JVM效率高得 多,但始终没法和NDK相比,你怪安卓的App慢,这份怨念很大一部分得喂给Java吃。Java自带内存回收机制,所以开发者使用Java写安卓App 时往往不注意控制内存泄漏(特别是一些小软件),当其进程超过Davilk虚拟机分配的阀值后,就会被系统杀掉释放内存,这样一来就有可能造成App的崩 溃、系统的假死等情况。
并不是说Java不能编写出精品App,但Java的确容易造成问题
总的来说,安卓上并不是没有高效的代码,但碎片化的硬件让开发者们很少考虑NDK,容易造成问题的Java仍被广泛使用。那么什么安卓App最常使用NDK开发呢?答案是大型游戏。反正纹理数据包都要针对硬件匹配,也不差在主程序省力气了,更何况游戏对代码效率要求很高。如果你看到同一个游戏的安卓版本比iOS版卡顿,往往因为安卓机硬件太低——iOS设备的图形性能比安卓机高太多了。
管理不力的Google,混乱的生态
归根到底,程度都是人写的。即使你的安卓App没用Holo框架,也没用NDK,只要用心开发,仍旧能成为精品。然而安卓平台的风气并不怎么好,隐约有劣币驱逐良币之势,混乱的生态和Google管理不力有很大的关系。
Google Play市场是安卓最安全、最规范的市场,Google Play市场已经是安卓市场模范中的模范——相信这点没人反对吧。然而就是这么一个正规的、大牌的、由Google亲自管理的市场,仍然充满着滥用高权 限、植入恶性广告、依靠刷榜上位的App。连官方市场都如此,你能指望第三方市场怎么样?