AS网站目录(www.adminso.com):安卓开源的真相:无法分支 虽然是名义上的开源系统,但如果微软的手机采用Android系统,那将是个巨大的错误,诺基亚都不行,因为Google把Android做得无人可改。不止一次了,总有人跳出来「建议」微软采用Android,替换掉市场乏力的Windows Phone系统
AS网站目录(www.adminso.com):安卓开源的真相:无法分支
虽然是名义上的开源系统,但如果微软的手机采用Android系统,那将是个巨大的错误,诺基亚都不行,因为Google把Android做得无人可改。不止一次了,总有人跳出来「建议」微软采用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就没法工作。
Android的四种用法(只有一种是正确的)
对于手机厂来说,采用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这种怪东西,但那只是精神可嘉。
嘛?C.O.S.比这还猛?但是这货比划的实在太猛了,我连呵呵都不敢。
兼容性与控制权,鱼和熊掌不可兼得
以上四种途径中,第一种AOSP加GMS的做法是唯一能提供完整Android体验的方法,并能保证开发者不会有任何别扭的地方,也是唯一能兼容所有Andoid第三方应用的途径。但显然,这种做法不是微软能接受的,这等于帮Google做硬件,让Google唱戏,而且这一唱就没有翻身之日了。
第二种――在AOSP的基础上提供一些替代应用,这可以让微软在Android上集成自己的服务。这样虽然能支持不少Android应用,但能支持多少并不确定。但至少肯定没法支持像植物大战僵尸2,愤怒的小鸟这些依赖GMS,并且有大量内购利润的大牌应用,但如果这部手机就是设计来主要使用内置应用就行的(比如相机,浏览器,邮件客户端),那丢掉些兼容性也无大碍。
NOKIA传说中在开发的Android手机可能就是以这种方式实现:AOSP作为底层,上面全是诺基亚自己的服务。
这种做法可能只适合于对软件兼容性要求不高的低端市场,能不能打正版僵尸无所谓的超低价手机,也是很多中国厂家采用的方案。但是对于微软来说,这完全搞错了方向:这家公司已经有了一个不能支持许多高大上赚钱应用的鸡肋系统,干嘛还要再搞一个?!
而且,能想象这种Android手机的用户体验有多差。Google已经把众多核心功能迁移到GMS框架内,比如短信和Chrome浏览器。AOSP是一个多bug、老旧,基本上不会再有后续维护的框架。想要抛开GMS从AOSP开始重起炉灶,开发出同等用户体验的系统,那前面就是两万五千里长征在欢迎你。因为Android开源的部分很差。
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产品的没有任何市场野心的公司。
声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!