买了个Nexus 5 用了段时间,打算来总结下Android和iOS的优劣。下面同时从普通消费者和开发者的角度对Android和iPhone进行无责任对比。

消费者篇


一、App的安装

iPhone上只能从苹果的AppStore安装,谷歌有个对应的叫Google Play Store,但是并不是唯一选择。国内有各种Android市场,都可以下载安装,通过浏览器等也可以直接下载安装,跟电脑上一模一样。

从安全角度来讲,苹果好一点,一切都在苹果官方监控审核之下,不会出乱子。Android的开放加上国内市场的节操,结果可想而知。即便口碑较好的豌豆荚,第一次安装打开后,会在你桌面上生成几个图标,包括一个文件夹,里面全是推广游戏。其他没节操的公司包括但不仅限于百度、腾讯、360、金山,恨不能在你桌面上摆满各种悬浮窗。

二、App的卸载

这一部分高下立判。iOS完胜。只要看操作步骤就行了。iOS只需要长按图标点击红色叉号,直观简单。Android还停留在Symbian时代,需要打开「设置」,点击「应用」,然后滑动找到App,然后点进去点击「卸载」按钮,点击后还给你「弹框」,这个就很烦。当然,也可以在Launcher页面拖动图标到顶部垃圾箱卸载,但毕竟还是要走进度条,逊于iOS。

三、桌面

iOS叫SpringBoard,Android叫Launcher,一个意思,消费者统称桌面。iPhone屏幕解锁后,所有的App都摆在那里,Android不是。你看到的是跟PC上一样意义的「桌面」,上面可以放的是各种快捷方式和widget,点击类似home按钮的进去,就跟PC的「开始菜单-所有程序」是一样的,列满本机所安装的所有App。最令人不解的是,以折腾出名的Android,「所有应用程序」这个界面居然是不能排序的,而且系统是按照名称排序而不是安装时间排序。(当然了第三方ROM特别是国产ROM肯定没这个问题)

当然Android的进步也很明显,4.4.4上桌面已经告白黑不溜秋,每行摆放的图标变少,这样一来图标就变大了也更好看了。

四、多任务和耗电

iOS省电的原因大概有以下几个:

1. 在按Home键后,系统会挂起App,Android跟电脑一样是真后台运行,当然更耗电。而且Android应用可以创建常驻服务。

2. 苹果是软硬件一体,可以做到最优化。Android是通用系统,无法针对特定硬件优化。

所以,Nexus 5其实是扛不到一天的,持续上网看图片文本,4小时就没电。这还是在我没装啥App的情况下。所以很悲剧地,Nexus 5要作为日常使用主力机是不堪重任的。实践已经证明iOS的后台机制更加优秀,不仅能省电,还能防止没节操公司做恶。Android就不行,由于可以后台运行开服务,于是后台跑流量偷传数据就轻而易举。想要约束这些公司,靠他们自律肯定没戏的,最好的方法就是iOS那样,不给你做恶的机会。

五、隐私控制

这一点是我最不满意Android的地方。手机上的隐私主要有通讯录、通话记录、短信、照片、定位。在iOS上,系统是有权限管理的,App尝试访问这些接口时,系统会给用户弹框,这个是系统级别的,并不是因为这些App良心发现。如果用户不同意访问,App就获取不到任何数据。这些隐私权限还可以在系统设置中随时修改,十分方便。Android就没有隐私控制的概念,任何App都可以随意获取你的隐私数据。真是糟糕透了。我想「Big Brother」们肯定是十分喜欢Android的,所有没有任何底线和节操的公司、广告公司,对Android这一特性肯定也是十分喜欢的。

六、体验交互

Android的三大按键真是比iOS好用太多,最好用的是返回键。这一点iOS完败。iPhone在小屏时代,用户需要点击页面上面的导航栏来回切换页面,到了大屏时代,我们的手指已经够不着了 需要双手操作才行。苹果也意识到了这个问题,因此从iOS7中便引入了在页面边缘侧滑可以返回的操作。但是这仅仅是对navigation controller有效而已。但Android不是这样。Android所有的页面都是一个Activity,采用堆栈式管理。所以所有页面间的切换都被统一化了,因此可以用一个标准返回按钮搞定所有返回操作,这种设计真是棒极了!

然而iOS有个十分优秀的功能Android没有。那就是轻点系统状态栏可以滑动到最顶端。如果你刷过很长的页面,就知道这个功能是多么好用。这一功能同样是系统级别的。当然,如果同一个页面存在多个可滚动页面,App需要简单处理一下。我经常看到一些粗心大意的App,大概也是粗心大意的程序员写出来的,在这种状况下都没有处理。

在界面UI方面,以前有苹果的拟物化风格,自从微软开始扁平之后,一夜间似乎世界上所有设计师都变成扁平了的。如果说微软的扁平是彻底的扁平,iOS7之后的iOS则是在扁平和拟物之间的。它没有微软那该死的丑陋无比的大色块外加高对比大字体(活脱脱一个老人机)。但Android 5.0之后,谷歌引入了新的设计风格,叫「Meterial Design」,我也体验了一把,着实非常简洁和素雅。当然,国内譬如锤子仍旧坚持拟物风格,这也无可非议,毕竟无论是扁平还是拟物,做的好看才是正事。从iOS6到iOS7,我认为是退步了,而从Android 4到Android 5,我认为是进步了。

也就是说,Android在界面上正在缩小与iOS的差距,那么来谈谈稳定性吧。这曾经是iOS的一大优势。但是自从帮主去世之后,苹果的品控越来越差,iOS8和最新的OS X已经让我失望。wifi经常掉线,Xcode经常崩溃。它的崩溃频率正在向微软出品的软件看齐。新版OS X的稳定性,相信用过的人都知道,界面卡死已经不再是梦。苹果出新品的频率太快,软件还没跟上。

 

开发者篇


首先是Android,无论是Activity、Intent、还是XML layout,其框架的设计都是十分优雅,其次是iOS的强大的异步实现和方便好用的SDK。

操作系统上,Android是Linux内核加Android框架,iOS是苹果的Darwin内核加Coacoa框架,半斤八两。

编程语言上,Android使用Java,iOS使用Objective C(以下简称OC)。Java更为先进,它有垃圾自动回收。但OC也很优秀,它十分动态,跟脚本语言非常像。跟Java一样也是单继承,另外Java里面叫接口的,OC叫协议,Java/C++里面叫类的,OC叫接口。Java/C++叫调用,OC叫消息传递。OC需要手动管理内存,iOS5之后引入了ARC,虽然没有从本质上有垃圾自动回收,但已经半自动化了。OC没有命名空间,不支持方法重载(overloading),这一点劣势明显。OC的动态特性是C++所不及的,整个类都可以在运行时修改,譬如可以在运行时修改掉类的父类、可以增加或删除方法和属性,这对C++来说是不可想象的。

至于UI框架,其实从被狂喷的MFC到Android到iOS,基本原理都差不多,MFC叫消息循环的,到了iOS叫RunLoop了,名字变了,原理没变。

使用Java这类「托管语言」的,优点很明显,程序员摆脱了内存泄露的噩梦,可以把心思放在实现需求上了。但是它也有缺点,就是如果一个程序员一开始接触的就是Java,且没接触过类似C、C++这种语言,我很难想象他会是一个优秀的程序员。我的意思是,在享受像Java这类高级语言的前提是,你本身已经了解到C++这种原始管理内存的编程语言,这样你才能更好的开小车。更何况程序员不应该满足于一种语言,Eric Raymond在「如何成为一名黑客」上甚至说,一个优秀的程序员应该熟悉一打以上的编程语言。

回到正题。我觉得Android的SDK的易用性可能不如iOS。再加上早期UI层面远不如iOS,所以Android的App总是看起来比iOS搓。但是这种差距正在缩小。iOS原先引以为傲的适配简单的优势如今随着苹果设备尺寸越来越多已经不复存在,苹果为此还推出了AutoLayout救急,这东西我认为跟CoreData一样「看起来很美,其实很难用」。而且随着ART的推出,还有硬件的不断上升,Android被诟病的流畅性可以不断缩小跟iOS的先天差距。

开发工具上,Android使用Eclipse加ADT扩展,基本跟Symbian开发一致。iOS使用Xcode。这两个开发环境差距很大,Android显得非常搓,Xcode则非常专业。再说模拟器,Android那龟速,Symbian模拟器都可以随便秒它几条街。

在应用发布上,iOS需要注册成为苹果开发者,个人开发者每年需要交99美元,取得开发者证书,这样才能在真机上调试,才能把应用发布到AppStore。另外,iOS开发只能在苹果的Mac上进行,因此开发者还需要买一台Macbook或iMac,如果需要真机调试,还需要买一台iPhone。总体成本较高。Android在PC上即可开发,另外无需交钱即可真机调试和发布,Android手机价格也很便宜。总体成本较低。

 

预测篇


封闭式的iOS和开放的Android,谁的前途更加光明?下面就来胡扯一下。

</p> 其实iOS虽然依旧是封闭系统,但是开放的接口是越来越多了,譬如国内用户期待已久的输入法。反观Android,正好相反,谷歌越来越希望增强对各个产商的控制力。这真是一个有趣的现象:封闭的iOS越来越开放,而开放的Android则有越来越封闭的迹象。当然了,谷歌应该没有傻到封闭Android,它应该清楚,一旦这么做,Android就必死无疑了,这个世界根本就不缺乏替代者。所以Android仍旧会保持开放,这是肯定的。而iOS由于不授权给其他产商使用,仅在苹果自家设备上,所以它的流行程度直接与苹果的设备销量关联。苹果有一种陷入了Android人民战争的汪洋大海之中的感觉。工业设计是可以追赶的、交互设计也是可以赶超的,iOS仅存的优势是软硬件一体和隐私的安全性。Android则是遍地开花,颇有当年PC迹象。另外,媒体向来说的三分天下颇为失真,事实是,手机上只有三种系统,iOS、Android和其他。WP根本没有任何优势,论封闭,它比iOS还严重的多。

物极必反,盛极必衰。这是肯定的。iOS和Android总有一天会衰落。就像当年的摩托和诺基亚一样。只不过,我相信开放的体系能存在得更久一些。