Android假开源:谷歌的开放是只能看、不能摸的开放

译文
移动开发
尽管Android确实“开放”,但这是一种“只能看、不能摸”的开放形式。我们可以为Android做出贡献并使用其中的一小部分功能,但几乎在每一个领域,想要在未经谷歌允许的前提下使用Android都会遭到极为猛烈的抵制。这一秒我们刚刚打算在Android上尝试一点谷歌并未批准的东西,下一秒钟整个世界就将轰然倒塌,只留下惊慌失措的我们独自伤神。

锁定制造商

虽然谷歌正想尽一切办法拉低开源代码库的价值,但在这场权力的游戏中、应用程序并不是谷歌夺取控制权的惟一战场。

如果一家公司曾经管理过AOSP分支、克隆过谷歌应用并打造出一位足以向谷歌Android挑战的竞争者,恐怕仍然很难拉拢到厂商为其制造设备。在开放市场当中,我们能够比较轻松地找到Android OEM合作伙伴并在过程中推动其转变阵营,但谷歌希望让自己的地位变得更加稳固。谷歌在移动领域的真正王牌在于对谷歌应用的牢牢掌控——主要成员为Gmail、谷歌地图、Google Now、Hangouts、YouTube以及Play Store。这些才是Android的左膀右臂,而且每一家或大或小的设备制造商都希望它们能够登陆自己的手机产品。由于这些应用并非开源,因此只有获得了谷歌授权才能合法使用。说到这里,大家脑海里大概出现了一位完美的“教父”形象——没错,想使用这些应用程序,制造商当然得付出一点“小小的代价”。

[[88013]]

尽管并不属于官方要求,但大家在加入了开放手机联盟之后会发现获取谷歌应用授权的难度会显著降低。所谓开放手机联盟是一系列向Android(注意,是谷歌的Android)做出承诺的厂商,其成员需要签订协议、声明自身不会开发未经谷歌批准的移动设备。没错,加入开放手机联盟意味着企业永远无法打造出可与谷歌Android进行竞争的Android 分支衍生产品。

宏碁就曾经吃过苦头,当时该公司正尝试在中国打造运行阿里巴巴推出的阿里云操作系统的移动设备。阿里云属于Android 分支,当谷歌听到风声之后、立即要求宏碁停止项目研发,否则将失去谷歌应用的授权许可。谷歌甚至在一篇公开博文中表示:

虽然Android仍然在以免费形式提供给任何用户,但只有与Android兼容的设备才能从整套Android生态系统当中获利。通过加入开放手机联盟,每一位成员都应为Android平台的创建做出贡献——而不是推出一大堆存在兼容性问题的版本。

这就让一众设备制造商的日子过得十分艰难,除了来自美国西部的无耻之徒Amazon。由于Kindle OS属于Android的非兼容性衍生版本,没有哪家OEM厂商愿意为Amazon提供Kindle Fire的生产支持。有鉴于此,Amazon希望用钱买通制造商,旨在打造自己的下一代平板设备——在当时的收购名单中,这位云服务与零售业巨头曾考虑过宏碁、华硕、戴尔、富士康、富士通、HTC、华为、京瓷、联想、LG、摩托罗拉、NEC、三星、夏普、索尼、东芝以及中兴。目前,Amazon的签约合作伙伴是广达电脑公司,这是一家主营笔记本产品的企业——Amazon恐怕也没有太多其它选择。

对于OEM厂商而言,这意味着他们无法逐步从谷歌Android过渡到其它分支版本。只要他们推出一台运行着竞争分支的设备,下一秒就会受到死亡的威胁——被立即踢出Android大家庭,这样的严酷环境让每位成员都生活得战战兢兢。按照谷歌的计划,任何一家有意转投其它Android 分支怀抱的厂商都将面临严厉制裁——别无选择的制造商只能跳下谷歌设置的悬崖、再无回头路可走。

而每一家希望获利谷歌应用许可的OEM厂商都必须通过谷歌提出的“兼容性”测试,从而证明自身符合授权资格。兼容性意在确保Play Store当中的所有应用都将正常运行在每一台设备之上。而对于谷歌来说,“兼容性”同时也是一种模棱两可的概念。正如某位Android工程师曾在一次内部发言中所说,这是一场“针对OEM厂商的考试,目的是确保他们按照我们的需要行事。”尽管谷歌如今推出了自动化工具来测试设备的“兼容性”,但要想获利谷歌应用许可,厂商还需要向谷歌发送私人邮件来“讨好对方”——当然,这是比较直白的说法。其中大部分沟通源自暗箱协议与秘密合同,所以我们的资料主要来自双方的公开争论以及谷歌与潜在Android叛逃者之间的法律诉讼(参见宏碁)。

另一大控制机制在于,谷歌应用的授权许可将全部应用作为一个单独整体来处理。也就是说,如果大家想要Gmail与谷歌地图,则必须同时带上Google Play Services、Google+以及其它任何一款谷歌想要添加进这份名单的应用。一家名为Skyhook的公司就用自身的惨痛经历证实了获取许可的艰辛道路。当时该公司打算开发一项与Android存在竞争关系的定位服务,如果用户开始选择Skyhook的服务,就意味着谷歌将无法从用户身上收集位置数据。这对谷歌而言当然不是好消息,于是Skyhook被理所当然地宣布为“兼容性测试不合格”。最终,OEM厂商只能在Skyhook服务与谷歌应用之间二选其一。虽然Skyhook公司就此提起诉讼,但目前诉讼结果仍然悬而未决。

利用臃肿软件进行试水

对于大多数OEM厂商而言,在脱离谷歌生态系统的同时还想继续保持成功无异于痴人说梦。惟一一种既开发自有应用、又不至于激怒谷歌大神的途径就是由OEM厂商自主打造免费的谷歌应用替代版本。这就是被大多数人就为“臃肿软件”的应用方案。臃肿软件的工作机制很像是软件工程中的“what if”逻辑关系,OEM厂商们通过复制谷歌旗下的全部核心应用来试探“围墙花园”之外的生活到底有多么艰辛。

三星的梦想:免费的谷歌替代方案。

三星这方面的工作做得相当“出色”,即尽可能多地推广自己的用户账户系统、后台同步机制乃至应用程序商店。但与此同时,设备上依然保留谷歌应用的整套原始方案。其中很大一部分,例如互联网、电子邮件以及日历应用,都立足于AOSP,但三星在谷歌放弃了这些开源方案转向闭源替代品后仍然继续为其添加新型功能。

在一台已经具备谷歌应用的手机上同时提供两款日历应用,这似乎显得既多余又愚蠢。但很多OEM厂商仍然将臃肿软件视为一种重要的战略后备机制——也就是B计划——并在真正面临被扫地出门的危局时拿来做最后一搏。这样如果谷歌真的把事情做绝,OEM厂商这边至少不会陷入“巧妇难为无米之炊”的境地。总而言之,OEM把自己开发的应用随手机一同发售并获取宝贵的用户反馈。虽然这种冗余方案令用户感到有些摸不清头脑,但仍然有一部分用户反而更喜欢OEM的核心应用版本——这实在是个好消息。

面对如上图所示的这样一份庞大的备用应用程序列表,看起来三星似乎随时准备脱离谷歌独自发展。但单纯复刻谷歌应用还只是三星为摆脱谷歌生态系统所做出的巨大努力中的一小部分。对于Android,OEM厂商真正想要的是来自第三方应用的广泛支持。谷歌也知道这正是自己的致命要害,因此该公司已经开始努力让应用程序生态系统对谷歌自身产生依赖性。

#p#

锁定第三方应用程序

[[88014]]

我们之前曾经探讨过Play Services更新所带来的影响,但它同时也是谷歌对抗Android 分支的有力武器。Play Services是一款由谷歌公司持有的闭源应用,而且也是谷歌应用授权许可包中的组成部分。任何一项由“正常”Android向Google Play Services迁移的功能都意味着它同时由开源走向了闭源。这款应用通过这种把戏不仅成功将用户汇聚到独家所有的闭源代码功能身边,同时也将第一方开发商牢牢锁定在了谷歌的专有API身上。

将Android应用生态系统从谷歌身上剥离看起来并不困难:我们只需建立起自己的应用程序商店并说服开发者向其中上传应用产品即可——轻松步入良性发展轨道。然而由Play Services所承载的谷歌API通过增强开发商对于谷歌的依赖性无情阻止了这一势头。谷歌为Google Play Services制定的战略目标在于让开发商的开发工作在经过谷歌批准的设备上变得更轻松——同时要想尽一切办法提高开发商在未经谷歌批准的设备上实施开发的难度。

如果大家正在使用任何一款谷歌API,同时尝试着让自己的应用程序运行在Kindle或者其它任何一个非谷歌AOSP版本之上:大惊喜!您的应用将直接损坏。谷歌的Android系统在目前的Android市场上占据极高比例,而开发商们所关注的无非是让自己的应用程序变得更易用、运作效果更好并赢得更多客户的青睐。谷歌API能帮大家实现这一切愿望,但带来的副作用就是应用程序会对谷歌的应用许可产生强烈的依赖性。

谷歌地图API

谷歌地图API允许我们在自己的应用程序中使用谷歌的地图数据。对于需要在地图之上覆盖对应天气图标或者显示当前位置的旅行应用而言,这实在是一种便利之极的机制。惟一的问题在于,谷歌地图是谷歌服务的一部分——而非Android的一部分。对地图API的依赖将导致我们的应用程序无法在非谷歌批准的设备上正常工作。

为了应对这一难题,Amazon被迫从诺基亚手中弄到了地图数据的使用许可并创建出一套可以正常使用的谷歌地图API克隆方案。该公司甚至专门提供说明页面,指导大家如何将自己的应用程序从谷歌地图中迁移出来。再次强调,谷歌的宗旨在于让开发商的开发工作在经过谷歌批准的设备上变得更轻松——同时要想尽一切办法提高开发商在未经谷歌批准的设备上实施开发的难度。如果想要让应用运行在Kindle设备上,我们就必须支持两种不同的地图API。

这对于Android的分支开发者来说无疑是种非常可怕的态势,这一次倒霉的是Amazon,他们不得不在两难之间做出选择:要么无限期向诺基亚支付许可使用费、要么自己着手对整个地球进行测绘。Amazon还面临着一大新难题,即跟上谷歌那轻盈的发展步伐:Amazon的地图API只支持谷歌地图API v1,但目前谷歌已经将API升级为v2。如果开发商在自己的应用程序中采用只有地图v2 API支持的新功能,那么Amazon将无法实现同样的效果。现在看来,要做的工作还有很多。

谷歌云消息

[[88015]]

谷歌云消息(简称GCM)是在Android系统当中推送通知信息的最便捷途径,但AOSP再一次与这一切无缘。GCM在I/O 2013大会上刚刚被正式归入Play Services,现在它不仅能够接收通知、同时也可以向上游推送消息。它还负责在不同设备之间进行通知内容同步。开发人员通常利用GCM向设备推送突发新闻、提醒应用程序有新数据到达或者实现信息同步。

尽管谷歌地图在应用程序范围内的使用频率似乎并不太高,但事实上很多应用都需要借助地图的推送信息完善自身功能与使用体验。这项功能的重要程度让Amazon不得不被迫对其进行复刻——否则云巨头将在竞争中被彻底甩在后面。Amazon的版本名为“Amazon设备消息”,顾名思义,它只能作用于Amazon设备。与地图API一样,我们需要为这一小部分用户付出大量精力从事额外工作与测试任务。GCM的每一项功能几乎都无法在Amazon版本中直接找到——这意味着大家必须自己找到解决办法。

位置API

[[88016]]

在谷歌I/O 2013大会上,谷歌公司革新了Android位置API并将其纳入Google Play Services。换句话来说,Android的顶级位置服务现在已经转向闭源路线。通过之前提到的历史发展轨迹,我们可以看到开源位置堆栈同样会被彻底遗弃。此次新加入的功能包括Fused Location Provider,一种经过“完全重新编写”的Android位置算法;Geofencing(允许我们在地图上定义位置,并在用户抵达该位置时触发应用程序中的事件)以及Activity Recognition,即利用加速计数据与复杂的算法识别用户正在步行、骑乘还是驾驶——这一切在无需开启GPS的情况下即可实现。

此举彻底让地图API与谷歌云消息沦为专有应用,因为这些功能需要由谷歌服务器提供功能支持。不过纵观整套位置堆栈,我们会发现这是谷歌一步步从开源手中夺权的过程。现在大家有两种方式来获得位置功能:效果好、功耗低但闭源的谷歌方式;还有精度差、超费电的开源方式。

应用程序购买

如果开发商希望自己的应用能够在Kindle上运行或者进入中国市场,恐怕只能想想其它的办法了。这又是另一个问题,如果大家希望拥有一套可行的AOSP 分支方案,那就必须通过复刻来实现——这正是Amazon的做法,即推出自己的Amazon应用购买API。相比之下,仍然从属于谷歌阵营的三星也显得比较激进,曾在两年之前推出过自己的应用程序购买API。

Play Games

[[88017]]

Play Games是另一种专有API,而且确实解决了大量对于移动开发者们来说最为头痛的难题。它能够轻松访问用户账户、排行榜、成就、云进度、反盗版以及实时多人游戏(Android平台)。最妙之处在于,它几乎能与一切对象并行协作,包括Web应用、iOS以及其它Android平台。好吧,又到了核心话题——除了AOSP,开源项目可不在Play Games的支持名单当中。这又是另一项第三方应用不得不严重依赖、备用Android版本则必须复刻才能获取的要素。

Amazon推出了一系列游戏API,并将其统称为“GameCircle”,不过它并不能像Amazon地图API那样作为Play Games的直接替代方案。开发商必须花时间自己鼓捣出一整套完全独立的多人游戏方案。

通过支持iOS进一步巩固锁定效果

谷歌战略中还包含着一套充满天才构思但已经濒临邪恶边缘的部分,也就是让九成谷歌API同时支持iOS。现在大家不妨从开发商的立场出发,思考自己到底要不要使用谷歌的API:大部分谷歌解决方案都能提供堪称业界最佳的实用性、功能性以及实施便携性。谷歌同时支持两大移动平台,因此大部分潜在用户群体都被涵盖在其中。惟一的不足之处在于,谷歌坚决抵制Android 分支,而且任何AOSP 分支对于我们的目标设备而言都是一块食之无味的鸡肋。

大部分开发商可能会对谷歌API表示友好,那么接下来的问题在于,他们该如何面对Kindle以及其它Android 分支?开发商们在很大程度上需要依靠自己找到可以替代现有API的解决方案,但这类方案要么早已过时、要么无法与现有应用完美协作。如果其它解决方案无法完美取代现有机制,开发商就必须想办法通过应用程序设计弥补可能无法正常生效的功能。与现有iOS与Android手中的用户群体相比,这样的目标客户基础实在太过渺小,我们需要认真考虑是否值得为此建立一套独立的生态系统。为此投入的时间能取得相应回报吗?面对这样的状况,大家恐怕也会选择向Android 分支竖起中指、直接跳过额外工作以及复杂的问题解决流程,直接投身于轰轰烈烈的谷歌Android开发大军。

三星不会改旗易帜

这里我们要验证的是,为什么Amazon能够脱离谷歌独立生存而三星不行。这是因为Amazon采取的是直接复刻谷歌API的路线,而三星目前尚未得到太多依附于谷歌的第三方开发商的明确支持。就目前的情况看,三星短时间内根本不可能彻底抛开谷歌的生态系统——直到他们推出自己的地图数据授权或者建立起一套云消息API。

Amazon在特立独行的发展道路上走得还算顺利,但这是一家诞生于互联网的企业。服务器及软件才是这家公司的强项,因此创建大量云服务对于他们并不是什么大不了的事情。相比之下,三星电子是一家电子企业——他们在血流中就缺乏创建云基础设施并打造大量API的能力。因此,尽管Amazon很可能在未来几年中依靠自家云服务平台的支撑将移动竞争优势整合进企业运营流程,三星仍然很难跨过横亘于面前的这道技术沟壑。

三星确实取得了一点点进展。正如前文所提到,三星公司已经开发出属于自己的应用购买SDK。有趣的是,他们还拥有一套广告SDK——但广告是真正能够赚钱的业务。正因为如此,谷歌在广告方面显得非常大方,同时为Android、iOS、Android 分支甚至是Windows Phone提供支持。

谷歌的开放是“只能看、不能摸”的开放

如果一家公司认真考虑通过Android分支建立起足以向谷歌发起冲击的竞争者,那么这篇文章中的全部内容无疑都颇具指导意义。即使如此,大家也才刚刚迈出万里长征的第一步——接下来要做的是,为用户提供一个从谷歌Android中脱离出来、转而投向新Android分支怀抱的充足理由。

谷歌在内部打理着一切工作。这家公司基本上以免费方式获取地图以及其它全部云服务。任何想要追随其发展脚步的厂商都不得不放弃谷歌核心项目名单中的一部分条目。Amazon被迫购买诺基亚地图数据的授权许可,这就是个很典型的例子。谷歌在地图服务中搭售广告——这当然帮助其赚取了大量利润——相比之下Amazon却需要为每一位用户所免费使用的地图数据买单。这种完全不同的收入态势让Android 分支无时无刻不饱受折磨。谷歌的服务成本低到甚至能够带来盈余,而任何其它竞争对手都必须每月向特定企业支付许可使用费。

退一步讲,即使某家公司成功打造出自己的Android 分支并在谷歌生态系统之外获得了引人注目的成就,接下来面临的就是无人愿意合作的窘境。几乎每一家设备制造商都受到合约所限,无法接手新系统设备的生产任务。即使这套Android替代方案完美无瑕,对于OEM厂商而言,贸然脱离谷歌生态系统都既麻烦又危险——而天平的另一端只是一套前途未卜的新方案。

尽管Android确实“开放”,但这是一种“只能看、不能摸”的开放形式。我们可以为Android做出贡献并使用其中的一小部分功能,但几乎在每一个领域,想要在未经谷歌允许的前提下使用Android都会遭到极为猛烈的抵制。这一秒我们刚刚打算在Android上尝试一点谷歌并未批准的东西,下一秒钟整个世界就将轰然倒塌,只留下惊慌失措的我们独自伤神。

责任编辑:徐川 来源: 51CTO
相关推荐

2011-12-12 20:56:55

Android

2011-07-18 09:28:44

开源开放

2023-03-22 14:16:39

谷歌BardAI

2024-07-19 11:50:28

2012-03-01 14:30:41

关键业务IT基础架构

2013-02-21 11:21:49

SUSECIO开源云

2013-02-25 08:48:26

开源开源云CIO

2013-11-12 09:13:21

开放云

2021-05-20 09:42:19

极狐开源开源社区

2010-04-22 10:22:31

Oracle开放Top

2011-09-23 10:14:05

开放操作系统Android

2011-12-12 14:48:29

开放平台

2012-06-20 09:57:48

开源云计算

2013-07-11 09:20:57

Android开放

2015-08-05 15:53:35

power星环

2014-08-18 09:20:14

Android开放系统

2021-11-09 16:17:09

开源数字化转型红帽

2016-08-17 15:59:08

VR行业lighthouse

2011-09-16 11:02:22

Google+
点赞
收藏

51CTO技术栈公众号