■ 安卓是谷歌商业生态,AOSP 是开源项 一、谷歌安卓商业生态的构成
关键内容:谷歌、商业约束、MADA 及商业分成牵引 GMS 云服务不分裂,ACC/CDD/MADA 及商业等手段约束的是安卓设备不分裂。
安卓在 2005 年 - 2008 年的早期阶段,在整个市场环境中处于一个略微被动的状态。
如何另辟蹊径?作为一家纯软件公司或者互联网公司,谷歌想要在安卓上团结到任何合作伙伴,其唯一选择便是开源。
所以谷歌选择用开源的形式来做手机操作系统,而且很快的团结到了各家厂商,我们记得当年第一部安卓手机是 HTC,然后很快的包括三星,包括我们国内一些公司,还有其他的供应商都开始来做各类安卓手机。
所以安卓开源还是一个非常重要的、关键的战略选择。安卓不开源则毫无机会,或者说只有开源才有一丝杀出重围的生机。
那么安卓到底是怎么一个系统呢?安卓实际上是由几个非常重要的部分组成:
(1)第一部分叫 AOSP,即 Android Open Source Project(安卓开源项目),是在 Apache、BSD、MIT 等开源协议下发行的开源项目;
(2)第二部分是由 ACC 等协议构成的商业约束条款环境;
(3)第三部分叫 GMS,即 Google Mobile Services(谷歌移动服务),GMS 一部分是面向用户的 APP(如 Gmail 邮件、谷歌应用商店等),一部分是用于核心后台服务的 APK(比如地图服务)和 GMS Core,即通常说的 Google Play 服务,提供各种谷歌专有的 API(程序编程接口)供应用商调用,这些服务的代码都是闭源的。
简而言之,AOSP 虽然是一个开源的系统,但 GMS 是闭源。AOSP 虽然通过开源快速团结到了众多开发者,但并不授予硬件制造商发布谷歌专有应用程序的权利,也不授予安卓生态系统成员使用安卓标志和其他安卓相关商标的权利。
基于 AOSP 开发,且满足 ACC 协议要求的,才能叫安卓系统,支持的硬件设备才能叫做安卓兼容设备。ACC 协议须找谷歌签。但是是否满足 ACC 要求,并没有规定由谷歌进行认定。这实际就是谷歌在 AOSP 的开源项目设计上的特殊之处。
硬件制造商可以基于 AOSP 的开源协议使用代码,但要宣称是安卓,至少要与谷歌签订 ACC 和 MADA 两项附加协议。谷歌通过 ACC 协议实现了防止安卓分裂的目的,并通过 MADA 协议实现了防止 GMS 分裂的目的。ACC+MADA 协议的组合完美实现了谷歌对安卓的控制。
ACC 协议指的是安卓兼容性承诺(Android Compatibility Commitment),ACC 协议限制了手机设备制造商可以自定义安卓的程度。具体而言,不允许原始设备制造商以自己的品牌(单独或与安卓第三方开发者的品牌一起)生产不兼容的安卓设备。谷歌这种通过 ACC 协议限制竞争的行为,难言合理,且因违反欧盟反垄断法已被欧洲废止。
MADA 协议即移动应用分发协议(Mobile Application Distribution Agreement),该协议限定了手机厂商们预装谷歌应用的方式,并规定硬件制造商以及任何第三方不能采取任何可能导致安卓分裂的行动。根据 MADA 协议,希望在手机设备中预装 YouTube、Gmail 等谷歌应用的手机硬件厂商必须预装整个谷歌移动应用程序包;另外,所有运行安卓的设备(包括硬件制造商没有预装谷歌应用程序的设备),都必须通过谷歌有全权决定权的安卓兼容性测试后才能使用安卓标识和安卓兼容性商标。
2014 年,谷歌非常自信的认为,这个世界上没有任何人可以实现另外一套 GMS,所以它也并不阻止任何人去搞一套自己的 GMS。但这在中国并未行之有效。由于谷歌不在中国开启任何和谷歌帐号相关的服务,所以 MADA 协议自然也对中国厂商的国内市场无效。国行手机基本上都不附带 GMS,少数预装了 GMS 的国行手机也未经谷歌授权。在中国市场,小米、OPPO、VIVO、华为这些厂商都没有用 GMS,整个中国的移动互联网生态也活得好好的,甚至有很多地方的多样性、商业价值和模式创新还优于全球。
尽管如此,ACC 和 MADA 在除欧洲以外的海外市场余威尚存,中国的安卓硬件厂商的海外市场仍难逃被谷歌限制的命运。
OHA 是安卓生态又一个非常重要的配套,在谷歌开源生态建设中功不可没。那么 OHA 又是什么呢?OHA 是 Open Hardset Alliance 的缩写,是谷歌主导构建的开放手机联盟。谷歌通过给予 OHA 成员享有安卓第一手资料的特权,把整个手机领域所有的重要角色(如三星、高通、德州仪器等)都吸引到了 OHA 这个圈子里,包括运营商、手机整机商,包括芯片公司、软件公司,包括后面的方案公司,这些公司实际上都是整个手机产业链里头非常关键的角色。这里面离开了谁都不行,他们通过 OHA 获得了优先的代码发送权限。这与公开可获取的 Linux 不同,Linux 的文档和演进过程都是公开的,开发者可以随时加入邮件列表,知道 Linux 正在或将要发生什么。
谷歌上述一系列的动作,严控整个安卓生态于股掌之中。
二、AOSP 是遵循开源许可协议的普通开源项目
如上所述,AOSP 是谷歌在本世纪初操作系统强者云集的时代背景下,为寻求一线生机,基于 Apache 等开源协议下发行的开源项目。AOSP 开源项目代码库( https://source.android.com)提供的源代码,目的就是为了将设备和应用移植到 Android 平台,同时确保设备和应用符合兼容性要求,从而让安卓生态系统维持良好稳健的运行环境,以便更好地服务于移动用户。
AOSP 的上层开源许可证是 Apache 2.0 宽松开源许可证,大多数安卓软件都使用 Apache 2.0 许可授权开发者使用。另外,除了上层使用的 Apache 宽松开源许可协议外,下层还有 BSD 宽松开源许可协议,以及 Linux 内核的 GPL2.0 强传染性开源许可协议。根据 Apache、BSD 等宽松开源许可证,开发者可以在符合相关开源许可证的要求下,对 AOSP 开源项目中的源代码通过复制、修改、发行的方式进行使用。
但是其 Linux 内核的 GPL 强传染性开源许可协议,是安卓在构建自身开源生态时的拦路虎。GPL 协议大家都非常清楚,就是要求所有的后续开发以及衍生开发的源代码,全部必须要遵照 GPL 协议进行代码开源。如果遵照 GPL 强传染开源许可协议,则所有的驱动也不得不开源出来。谷歌显然无法让所有参与生态的人(比如芯片与器件供应商)都必须去开源。从谷歌的开源生态建设考虑来看,谷歌显然不会让这样的情况出现。为了开源生态构建,谷歌做了一系列巧妙的开源协议的选择和适配,并巧妙的在使用 Linux 内核的情况下又完美的绕开了 GPL 强传染开源许可协议,两头得利。
■ AOSP 的层级构成图--基于原始图片(来源于 https://source.android.com )绘制
Linux Kernel 虽然基于 GPL 2.0 开源许可证发布,但也在设计之初就设置了 GPL 许可证例外,例如在内核目录文件 LICENSES/exceptions/linux-syscall-note 中包含 Linux 内核的 COPYING 文件中记录的 Linux 系统调用例外,该文件用于用户空间 API(UAPI)头文件中。使用 Linux 内核的头文件定义,进行系统调用的程序适用该 GPL 许可证例外。
Linux Kernel 中 GPL 与非 GPL 的分界线为 GNU glibc, 其普通的系统调用为 GNU glibc 向外暴露的系统调用接口。而安卓则将 Linux 常用的 GNU glibc 替换为 Bionic libc 类库(改用宽松许可证 BSD),并通过该 Bionic libc 类库暴露了更多原来在内核空间才能使用的接口,让用户空间的驱动能够充分利用内核和硬件资源。
AOSP 在用户空间和内核空间之间设置本质为用户空间主驱动的硬件抽象层(HAL),规避 GPL 的硬件厂家把需要保护的商业机密以及知识产权相关的逻辑放在 HAL 层,以二进制包的方式发布,不需要公开源代码。
就这样,谷歌帮助安卓开源生态里面的应用开发者(当然包括芯片和器件供应商在内)解了 GPL 强传染性许可协议的套,让下游开发者放心大胆的去使用 AOSP 的开源代码,既保护了他们的知识产权,也保护了他们的商业利益。
因此,AOSP 本质始终是开源项目,只要遵循 AOSP 规定的开源许可协议,任何开发者都可以合规的进行开源代码使用。这个区别于安卓商业生态。
⊙ 以上内容版权归属「iNews新知科技 」所有,如需转载,请务必注明。