说这话的人到底是人笨呢,还是心眼坏。Google 这么多年来,已经把 Android 做成了本质上无法分支(fork)的软件,开源只是名义上的,对于其他手机厂来说毫无意义。没人能再 fork 出自己的 Android,同时保证可用性,吸引大量的开发者和海量的软件。
「微软该转 Android」的论点是:Windows Phone 平台没能吸引到足够的开发者投入精力,也没能为开发者创造收入,但是 Android 两者兼备。如果从 Android fork出一个微软自己的系统来,微软就能一箭双雕——在 Android 上部署自己最擅长的服务,包括 Exchange,Active Dictory 和 System Center 或者 InTune;给予消费者完整的 office 体验——并且替换掉 Google 的服务,完全基于自己的云套件(Bing搜索,Bing 地图,Azure) 。同时还能保留大量用户需要的 Android 应用。
按照这种逻辑,Android 的丰富应用和巨大市场号召力会吸引消费者购买微软的产品,更多熟悉 Android API 的开发者会入场。微软的开发成本也会降低,因为核心的维护工作就让 Google 去做好了。
这种事情根本没法弄的原因在于,Android 平台的正确用法不是这个样子的,Android 本来就不是为了大家一起玩而设计的,它是一个Google控制的「庄家定规则的游戏」,随着 Android 的每一次新版本发布,Google 正把这种想法变得更加不切实际。
代码开源不彻底
大体上说,Google 写了两大坨代码。
第一坨是核心的 Android 开源平台(AOSP)底层代码,它提供了整个智能手机系统的基础骨架:包括一份 Android 专用的 Linux 内核,Dalvik 虚拟机,和部分基础的用户界面(设置、消息面板、锁屏界面)。这部分代码以 GPL 和 Apache 的混合授权模式发布。虽然 Google 周期性地发布这部分的开源代码包,但被行业批评为「一副关起门来闷头搞」的不合作腔调。
第二坨称之为「Google 服务套件(GMS)」。GMS 又分为两大块:Google Play Services 提供了海量的 API 和系统服务,包括 Google 地图,位置服务和内购功能;Google+ 集成;远程 Wipe;恶意软件扫描等等。还有就是一些 Google 自己的软件:搜索,Gmail,Chrome 浏览器,Gogole 地图等。
GMS 提供了很多重要的系统特性。而且 GMS 是闭源的。任何人可以拿到 AOSP 的代码编译好刷进任何一台手机。但是 GMS 可不能这么搞,为了获得 GMS 的授权,设备必须符合 Google 的硬件标准(性能,屏幕分辨率等等),而且必须通过 Google 的测试。虽然 Google 表示 GMS 套件是免费的,但测试是收费的,平均每部配置 GMS 套件的 Android 手机都得支付给 Google 0.75美元的测试费。换句话说,除了最有用的部分,Android 的确都开源的。
GMS 也没法分割:如果手机要通过 Google 的测试,那么它必将装载上全部的 Google 软件。
而且对于开发者来说,AOSP 和 GSM 也是水乳交融,分不清彼此。Google 正慢慢地把越来越多的功能从 AOSP 从 开源的 AOSP 迁徙到闭源的 GMS 里去。举个栗子,在五太子 Nexus 5 上,手机的界面——你用来显示图标和加载程序的核心功能已经滚到了 GMS 套件的 Search 组件里。
类似的,API 也发生了相应的修改。比如 AOSP 本来是有一个位置服务的 API 可用,但 GMS 提供了一个很好,更新,提供更多功能的 API。Google 鼓励开发者用 GMS 里的 API。AOPS 里的那个老 API 从 Android 1.5 以后就没有更新过。这样造成的结果就是很多新的第三方 Android 软件其实很难说是 Android 的软件,其实它们更应该是 GMS 软件,离开闭源的 GMS 就没法工作。