Android 开源的真相: 无法fork
时间:2014-03-07
来源:互联网
不止一次了,总有人跳出来「建议」微软采用Android,替换掉市场乏力的Windows Phone 系统。
这种口水文章估计将来也不会停。
说这话的人到底是人笨呢,还是心眼坏。 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 就没法工作。
作者: adaf1 发布时间: 2014-03-07
对於手机厂来说,采用Android 系统的方式一共有四种。
第一种就是Google 希望各家采用的方式:同时使用AOPS 和GMS。 提交通过测试,装载全部Google 的服务和应用套件。 这就是三星,HTC 和LG 采用的方式。 这条道路还是给手机厂留下了一些自定义的空间。 OEM 厂可以在Google 应用以外,装载自己的相同的应用。 但貌似Google 对各厂在这点空间搞的花头也不满意了,有报导说Google 和三星谈判,三星同意减少在手机界面上的各种奇葩修改,特别是移除与Google 应用重复的其他应用。
这种方式因为提供了完整的AOPS 和GMS 的API, 也就保证了最佳的软件兼容性。 同时也最大程度地保证了Android 系统的用户体验,不管各厂怎么折腾界面,Google 的软件总是存在的,用户体验总是一致的。
这让Google 也最大程度地保持自己对Android 系统的控制力,而且这种控制力只会与日俱增。 每一次新版本Android 的发布,Google 就会把更多的API 弄到GMS 套件里去,慢慢把AOSP 上的肉一点点剃掉,只剩一个底层的骨架。
第二种极端做法,整个移除GMS 服务包,基於AOSP 开发一些粗制滥造的替代品。 当然,这样做的结果,就是用户得到的体验会差很多,所谓能用就行了。 在一些低端机上,很多厂家就是这么干的,特别是在中国市场。 只要你敢用,厂家提供了自己的软件市场和各种替代软件,填平Google 软件缺失所留下的空隙,但这些产品和采用GMS 套件的手机比起来,在水准上要低很多,这些手机不兼容很多基於GMS 开发的软件,而且数量不少,比如很多软件依赖GMS 的内购功能。
第三种做法介於第一种和第二种之间:发布基於AOSP的设备,但是开发与GMS 一样的API 以保证兼容性,比如GPS和地图服务,但是基於微软而不是Google 的。 很少有厂家选择这条道路,最接近这种做法的只有Amazon,它们提供了GMS API 的替代方案(特别是地图服务),但完全没法跟上Google 的开发迭代速度。
是从技术上说,如果一家公司足够土豪心,豹子胆,完全开发出自己的API, 整个端掉GMS,这代价也绝对没法让人淡定。 特别是为了保证兼容性,这活不光是提供与GMS 想通的功能,还包括提供和GMS 提供的开发框架和开发者工具。
另外,GMS 还有一些无法替代的东西,比如「Google+ 分享」,很少有公司能提供能与之匹敌的替代方案。 又比如,GMS里有一个API 提供了多人回合游戏功能,虽然厂家可以提供自己的API,并建设自己的后台硬件支持回合制游戏服务,但显然这完全脱离GMS 的做法,无法让游戏开发者接受。
更不要说这么大费周章搞掉GMS,定是不小心忘了Google 和Oracle 之间关於这些API 的漫长的专利官司。 事实上,能做出这样事情的厂家,不可能不引起Google 法务部门的疯狂点赞。 Google有钱啊,如果他愿意,法庭当茶馆,慢慢和你谈。
除了以上三条路以外,总有狠人能比划出第四条道路:只用AOSP 的最基础的功能,比如硬件支持层、通讯模块什么的,余下的全部推墙揭瓦,自己开发……但这相当於又把Android 从头开发了一遍。 Amazon 的自有API 可以归入这种「猛人」行列,提供了功能一样,但是实现了与GMS 完全不兼容的API。 我想不太会有厂家能做出Amazon 这种事情。 虽然还有像Ubuntu for Android 这种怪东西,但那只是精神可嘉。
嘛? COS比这还猛? 但是这货比划的实在太猛了,我连呵呵都不敢。
兼容性与控制权,鱼和熊掌不可兼得
以上四种途径中,第一种AOSP 加GMS 的做法是唯一能提供完整Android 体验的方法,并能保证开发者不会有任何别扭的地方,也是唯一能兼容所有Andoid第三方应用的途径。 但显然,这种做法不是微软能接受的,这等於帮Google 做硬件,让Google 唱戏,而且这一唱就没有翻身之日了。
第二种—— 在AOSP 的基础上提供一些替代应用,这可以让微软在Android 上集成自己的服务。 这样虽然能支持不少Android 应用,但能支持多少并不确定。 但至少肯定没法支持像植物大战僵尸2,愤怒的小鸟这些依赖GMS,并且有大量内购利润的大牌应用,但如果这部手机就是设计来主要使用内置应用就行的(比如相机,浏览器,邮件客户端),那丢掉些兼容性也无大碍。
NOKIA 传说中在开发的Android 手机可能就是以这种方式实现:AOSP作为底层,上面全是诺基亚自己的服务。
这种做法可能只适合於对软件兼容性要求不高的低端市场,能不能打正版僵尸无所谓的超低价手机,也是很多中国厂家采用的方案。 但是对於微软来说,这完全搞错了方向:这家公司已经有了一个不能支持许多高大上赚钱应用的鸡肋系统,干嘛还要再搞一个? !
而且,能想像这种Android 手机的用户体验有多差。 Google 已经把众多核心功能迁移到GMS 框架内,比如短信和Chrome 浏览器。 AOSP 是一个多bug、老旧,基本上不会再有后续维护的框架。 想要拋开GMS 从AOSP 开始重起炉灶,开发出同等用户体验的系统,那前面就是两万五千里长征在欢迎你。 因为Android 开源的部分很差。
Android 开源的真相: 无法fork
Amazon 的Kindle Fire 就是一个例子告诉你从AOSP 平地起楼有多难。 Kindle Fire 不支持最新最酷的游戏,因为开发者没兴趣去同时维护一个不依赖GMS 框架的产品线,虽然两者之间看上去很像。 Windows Phone 所遇到的问题,换了Android 也完全没有解决。 只能带上GMS 才能玩得开。
第三条道路,就是在AOSP 的基础上,从头开发与GMS 完全兼容的接口——或许可以解决这个问题,但这也把做Android 分支的工作量放大到极大。 但如果能做到完全提供与GMS 一样的接口,开发者和用户的体验,以及那些只基於AOSP 的程序的兼容性都可以得到保证。
但这个工作量……打个比方,大概和把Windows Phone 的壳和API 全部套在桌面版的Windows 系统一样。 某种程度上,这个工作量可能会更大,比如在AOSP 上重新开发一遍IE 浏览器。
更重要的是,Google 还是把著上游控制权,因为Android 系统的表现,完全是基於底层API 提供的功能的:比如「分享到」功能,完全是Android 自己的方法和风格,而这都是由Google 决定的,这就限制了下游开发者无法反驳Google 的选择。
最后一个—— 除了AOSP,其他全部推翻重来。 自由度和灵活度都有了,然后呢? 内核其实根本不重要好不好,不就是个内核么! 微软已经有了一个手机系统的内核了,在Window Phone 8 用的好好的。 很明显,对微软来说,拋弃整个Windows Phone 系统不是说连这内核都能不要了。 这已经是一个为微软量身打造的手机系统内核,没道理用别人的。 而且内核真的不是整件事情最难的部分。
所以,别闹了
如果Android 真的和Firefox OS 或者Ubuntu 一样的开源境界,那么「微软你就从了Android 吧」这种话题才有意义。 但是Android 和GMS 已经密不可分。 如果所有东西都在AOSP 的开源框架下,其他人才能把后台服务的一块块代码替换掉,以较小的工作量,同时又不毁掉兼容性,这件事情才有可能。
但显然事情已经不是这样。 不光因为Android 骨子里根本就不开源,而且Google 正努力把它搞得越来越不开源。 所以对於想fork 自己的Android 系统的人来说,选择只有两个:要么受制於Google 得到其他的好处,要么把控制权拿来,并放弃一切。
Android 天生就不是让你来随便fork 的。 因为GMS,Google 摆明了就是不许别人fork。那些建议微软从了Android 的人,不是居心叵测,就是根本不懂Google 为什么要做「开源」的Android。
还有一件事
别忘了Google 和硬件商签订的授权协议里规定了,通过Google 授权采用Android 系统的厂家不允许制造不含GMS套件但又基於AOSP ,同时兼容GMS API 的手机设备。 换句话说,如果有厂家敢为其他软件商制造纯AOSP 的设备,将被完全拒绝使用任何GMS 的软件和API 服务。 Amazon 只好费尽力气在地球上找到一家这样的OEM 厂家来给他们代工造Kindle,这必定是一家对自己的Android 产品的没有任何市场野心的公司。
作者: adaf1 发布时间: 2014-03-07
作者: Susan﹏汪汪 发布时间: 2014-03-07
原来google服务要比钱
作者: Susan﹏汪汪 发布时间: 2014-03-07
作者: cu_wildhorse 发布时间: 2014-03-07
不过之前冇为意
原来google服务要比钱
作者: evilchau 发布时间: 2014-03-07
对,GMS 系要授权费。但当然无微软收得咁贵
而且google只做大公司生意
一些小厂直头睇都唔睇
作者: Susan﹏汪汪 发布时间: 2014-03-07
And didn't Microsoft get into similar trouble acting in similar ways?
作者: 熊爸爸 发布时间: 2014-03-07
乜原来kitkat 4.4.2开始
不能再修改SD card上的资料、变成read only?
作者: Susan﹏汪汪 发布时间: 2014-03-07
作者: captkkk 发布时间: 2014-03-07
作者: X1-Planet 发布时间: 2014-03-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28