上周,沸沸扬扬的Android垄断案把Google又一次推向了风口浪尖,在这次的垄断案中,Google被欧盟起诉赔偿50亿美元,被起诉的其中一个原因是Google对外宣称Android是开放的,但其实他们只是开源了一部分代码,很多重要的代码都是闭源的。

从这些年Google的对Android的态度来看,他们正以各种手段控制开源,这与Android开放的口号是否相悖?Google又为何这样做?首先,我们从Android发家史说起。

Android发家史

2007年11月,Google推出了Android开源项目(AOSP),在此的几个月前,第一代iPhone发布,开创了智能手机的时代,当时Google还是苹果的应用程序合作伙伴,那时,Google预料他们在移动市场上的未来将会是这样的:

如果Google不立即采取行动,未来我们将面临严峻的形式:一个客户、一个公司、一个运营商将是我们唯一的选择。

从上面这句话可以看出,当时Google十分害怕苹果会在未来统治移动领域,所以,当时,在移动领域还没有站住脚的Google,为了对抗苹果,只好将Android作为一个开源项目推出。

此后,Android在早期智能手机市场上的份额一路飙升。

今天,Android在智能手机市场的份额从零增长到现在的80%还多,单从市场份额来看,Android可以说赢了苹果。但“Android获胜”和“Google获胜”并不一定是同一回事。由于Android是开源的,因此它并不是真正完全属于Google。任何人都可以自由地使用它,克隆源代码,并创建自己的fork或备用版本。

众所周知,在移动市场上,抛开操作系统,App才是一切。Android在各种品牌的手机上得到大量安装,也意味着它将拥有大量的应用程序。如果一家公司fork Android,加上Android已经兼容上万个应用,这家公司只需建立自己的应用商店并上传所有的内容即可。但是如果有公司开发出比Android更好的操作系统,那么将会严重威胁Google目前的地位。

Google明白移动是互联网的未来,控制世界上最大的移动平台有很多的好处,但是又不可能收回开源的承诺,所以就引出了一个问题:如何控制开源项目?

众所周知,“Android”分为两个部分,第一部分是Android开源项目(AOSP)的开放部分,它是Android的基础,封闭的部分是Google旗下的应用程序,虽然Google并不会完全关闭Android开源项目,但是他们正在竭尽所能地利用现有的开源项目,主要的方法是:在封闭的Google保护伞下引入越来越多的应用程序。

Google的闭源之路

谷歌闭源的应用程序一直存在着。起初,这些闭源的应用主要是Gmail、Google地图、Talk和YouTube。那时Android还没有那么大的市场份额时,谷歌觉得控制这些应用就足够了,所以将Android的其余部分变为开源项目。但是随着Android已经成为移动领域的巨头,谷歌决定对开放的源代码逐渐实行严格地把控。

较少的开源代码意味着Google的竞争对手需要付出更多努力。虽然Google无法杀死一个开源应用程序,但他可以将升级版本的闭源化使原来的应用形同虚设,从而让这个应用“报废”。当谷歌重新设计应用程序或将新的Android版本发布到Play商店时,通常会显示已闭源,同时AOSP版本的应用也会失效。

Google还做了哪些工作?

控制OEM

对Google来说,只拥有面向消费者的应用程序的控制权还不够,Google还需要控制手机厂家。

如果某个公司设法fork AOSP,克隆谷歌应用程序,并成为Android的竞争对手,这也是徒劳的,因为他很难找到手机厂商搭载他们的应用。

对一个开放的市场来说,说服一个Android OEM放弃Google而与他们合作是很容易的,但是Google对此早有防范。因为Google在移动领域真正的实力来自于对谷歌应用的控制上,主要包括Gmail、地图、YouTube和Play商店等,无论是大型还是小型的手机厂商都希望在手机上获得这些应用,由于这些应用程序不是开源的,因此需要从Google那里获得许可。那么Google肯定会在许可协议上附加一些要求,控制那些手机厂商,防止“叛变”。

此时,Google推出了一个OHA(开放手机联盟),加入OHA的OEM将得到Google App更多的授权。而加入OHA的OEM必须得签署一份协议:禁止构建非Google认证的设备,并禁止和模仿Android操作系统的企业合作。

早在2012年时,宏碁想在中国生产运行阿里巴巴的Aliyun OS的设备时,宏碁就收到谷歌的通知,若新产品上搭载阿里云操作系统,Google将会解除与其Android产品的合作和相关技术授权,后来手机发布会也被迫取消了。

控制第三方应用

Google Play的战略是将“Android应用生态系统”变成“Google Play生态系统”,让那些应用在Google认可的设备上轻松运行,在非谷歌认证的设备上寸步难行。

Play Services是Google闭源的应用程序,它不仅吸引用户使用闭源的应用,还能通过Google的专有API控制第三方开发人员。windows远程桌面

如果你使用了Google API并将你的应用运行在Kindle或任何其他非Google版本的AOSP上,结果是:恭喜,你的应用程序坏了!

在这一点上,Google的想法是:Android在移动市场上占有很高的比例,开发人员只需构建应用程序,使其运行良好,让广泛的用户受益即可。而Google API能帮助他们实现所有的这一切,但副作用是你的应用需要永久地依赖于拥有Google Apps许可证的设备。

总而言之,虽然Android是“开放”的,但是它是以“可远观而不可亵玩焉”的方式在开放着,只要你高兴,你可以将其用在任何领域,但前提是你需要得到Google的“祝福”,换句话说,如果你想对Android动歪心思,触犯了Google的底线,它可能会让你崩溃。

谷歌已经对Android的开源严防死守的更多相关文章

  1. [转]收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation

    原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...

  2. Android优秀开源项目

    本文转自:http://blog.tisa7.com/android_open_source_projects Android优秀开源项目 Android经典的开源项目其实非常多,但是国内的博客总是拿 ...

  3. Android常见开源解决方案

    原文:http://m.pstatp.com/group/6348269082899497218/?iid=6036708044&app=news_article&tt_from=mo ...

  4. [转]收集android上开源的酷炫的交互动画和视觉效果

    原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...

  5. 谷歌推出全新Android开发语言Sky:让App更流畅

    土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/   使用HTML 创建Mac OS App 视频教程. 官方QQ群: (1)App实践出真知 434 ...

  6. 各种Android UI开源框架 开源库

    各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...

  7. Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)

    Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog) Android第三方开源对话消息提示框:SweetAlertDialog(sweet- ...

  8. 【转】近百个Android优秀开源项目

    近百个Android优秀开源项目   Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧 ...

  9. Github-Client(ANDROID)开源之旅(四) ------ 简介Roboguice

    Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC),Guice非常小而且快.Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数 ...

随机推荐

  1. P2158仪仗队

    今天早上你谷崩了 由于脑子抽筋,所以选了一道数学题来做.做着做着就疯了 传送 窝盟先画张图冷静冷静 这是样例的图,其中蓝点是有学生的地方. 窝盟来看一下那些学生可以被C君看到. 假设这张图是一个坐标系 ...

  2. Flask变量规则(构建动态url)

    原文出处: http://codingdict.com/article/4867 可以通过将可变部分添加到规则参数来动态构建URL.这个变量部分被标记为 < variable-name>. ...

  3. for的循环题

    package Tony2;import java.util.Scanner; public class Day27 { public static void main(String[] args) ...

  4. c#继承与构造函数的调用

    1.实例化父类时,可以通过new子类来实例化父类,执行构造函数的顺序为:先执行父类的构造函数,再执行子类的构造函数. 2.实例化子类时,只可以new子类,执行顺序同上. 3.父类实例化后,只能执行父类 ...

  5. ELK 日志系统入门及通过 Docker 部署

    1. ELK 系统是什么 ELK 是一套日志中心解决方案,其三个字母分别表示: Elasticsearch:负责日志存储及检索 Logstash:负责日志收集.过滤及格式化 Kibana:数据看板,负 ...

  6. Git009--分支管理&创建与合并分支

    Git--分支管理&创建与合并分支 一.分支管理 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578 ...

  7. div在上一层容器居中的方法

    今天又学了一种新方法,其实不算新,只是我不知道而已,想想学了一年多,现在什么动效都能写点出来了,但是一些基础的东西还是掌握不好,所以我现在依然会一遍遍的复习h5和css3,这就是自学的坏处,不知道的东 ...

  8. [已解决]报错: Windows下Redis服务无法启动,错误 1067 进程意外终止解决方案

    启动redis时出现的报错内容: 解决方法: 找到登录状态 如果是网络服务,直接双击此服务,修改为本地系统服务即可启动!

  9. ac自动机(tree+kmp模板)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  10. 复制书稿 (dp+贪心)

    [题目描述] 现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一.第三和第四本书给同一个人抄写 ...