首页 > 代码库 > 谈谈 Android

谈谈 Android

现在的手机操作系统似乎又回到了当年 PC 系统的状态,一个是以开放为核心的 Windows 操作系统(是的,Windows 是一款硬件开放的操作系统),另一派是软硬件完全封闭的 Mac 操作系统。在当前手机市场,除了 Windows 换成了 Android ,历史似乎又重演了一遍,只是 Apple 不再是那个被 Microsoft 打压的抬不起头的公司,而成为了手机市场中无可撼动的霸主。

这篇主要是吐槽 Android ,为示公平下一篇吐槽iOS :)

在这场手机设备的竞争中,我觉得 Android 有以下几点没做好:(下文叙述的软件指操作系统或应用程序)

1.Google 开放了硬件,但是也开放了软件

当年 Microsoft 只是硬件开放,硬件随便折腾,Microsoft 操作系统把硬件折腾出的乱七八糟的东西全都盖住,开发者不受罪。前几年我试过在 Windows7 32bit 上运行 Windows3.0 的应用程序,一切正常。反观 Google,不但硬件开放,软件也开放,其实软件是完全属于自己的部分,软件的蛋糕就这么大,开放了这部分就相当于削弱了自己的力量,结果就是谁都到 Android 里插一脚,Google 失去了对软件的完全控制,难受;厂商想控制但是心有余力不足,难受,用户面对这么多变种系统,无所适从,难受。就目前的状态,在这场开放里没有人是赢家,大家为自己的利益相争,像是功夫片里三个相互卡住的敌人,除非三人能一起醒悟,否则是谁先支撑不住谁先死了,剩下两人再挣的你死我活。当然这种开放在之前还是有过好处的,诱厂商上钩,扩大自己的市场份额。

2.上马太仓促,方案没选好

Android 开发语言使用 Java 的目的很明确,Java 的环境成熟,能更快的开发出应用程序,但是 Google 没想到或当时无暇顾及到的就是 Java 虚拟机导致的卡顿和费电问题,这个问题成了 Android 的老大难问题,直到4.X的版本才开始有所好转,但是Android 这么多年的发展,Google 很难再拿出新的可以替换 Java 的新语言,这让 Android 处于一个非常别扭的位置,因为同样水平的程序员写代码, 用的 obj-c 肯定会比用虚拟机的 Java 语言更快一些。Google 可以无限缩小这个差距,但终究是比 obj-c 慢,在运行速度和省电方面永远处于劣势。如果当年 Google 选择了 C++ 也许会把现在的局面逆转,或者至少是对等的水平。(题外话,可能有人提出 C++ 语言复杂,开发费时的问题。这个应该分成两面看,C++ 提高开发门槛的同时也能提升应用质量)

3.Android 系统过度开放

也许是为了向开发者示好,Android 系统太开放了,开发者几乎可以做任何事情。历史经验告诉我们,如果给对方过度的自由,对方必然会做出对己不利的事情,这里两个对立面是系统和软件开发者。根据“太极”任何事情都有正反面,考虑正面的同时也要考虑反面,也许是 Google 求市场份额心切,或者是受开源开放的思想影响,或者是为了给开发者创造更大的舞台,毫无疑问,Android 系统开放过头了,任何应用都可以读取你的短信,通话记录,个人照片,只要在配置文件里写上除非你不安装,安装就一定要同意的权限。有人看到了这个市场,开发了安全类软件,可以在安装软件的同时限制应用权限,但是这个安全类软件反倒是个讽刺,因为需要比普通应用更过份的 root 权限。更可怕的是安全软件在没有 root 权限之前和普通软件没什么区别,也就是说任何软件都可以有机会获取 root 权限,这实在不能不说是设计上的一个缺陷。

4.系统性能过剩,只为了跑分

现在各家的 Android 机皇,随便哪一部拿出来参数都比 iPhone 高,但是没有一家敢说自己在体验上完全超越了 iPhone,厂商自己最清楚,这些参数不过是跑分用,真按着顶级参数跑程序,不但能煎鸡蛋,而且几小时手机就没电了。消费者平时使用的 Android 手机,是被降频并且可能关闭了部分核心之后的手机。美名曰“动态核心控制”,更省电。换一个角度想,就是厂商为了让消费者手中的手机能降频使用煞费苦心,宣传上标高参数,实际却做着完全相反的事情,真让人哭笑不得。

Android 系统的开放也有好处,比如来显归属地,垃圾短信拦截,输入法,自定义桌面等等。但是与上面的问题相比,无法让人欢呼雀跃的喊出一声:“这一切值了!”。