本帖最后由 keer_zu 于 2020-12-9 14:43 编辑
Android 是 Apache License 2.0 许可证,这是怎么回事呢?Linux kernel 的版权是 GPL。 这下问题来了:如果你是硬件厂商,希望你的硬件能在 Linux kernel 下运作,那么就必须要有驱动程序。如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了。许多厂商不愿意这么做,所以就提供编好的驱动程序,但不提供原始码。 Android 的重点就是商业应用,Google 采用了一些手法来绕过这问题。他们把驱动程序移到 "userspace",也就是说,把驱动程序变成在 Linux kernel 上层跑,而不是一起跑的东西,这样就可以避过 GPL。然后,在 kernel 这边开个小门,让本来不能直接控制到硬件的 "userspace" 程序也可以碰得到,这样只要把"开个小门"的程序代码公布就行啦。
在知乎找了些关于安卓的开源部分,如下。
Android代码包括三部分:
- Android 开源系统(Android Open Source Project,简称 AOSP ) 提供了 Android 系统的框架,包括修改后的 Android 专用 Linux 内核,Dalvik 虚拟机和 Android 应用层框架等。AOSP的大部分源码采用 Apache 2.0 授权模式发布,另外 Android 专用 Linux 内核部分采用 GPL 授权。Apache 2.0 授权规定,可以任意使用源码,不需要开源。GPL授权规定,对源码的任何修改都必须开源。
- Google 移动服务(Google Mobile Service,简称GMS)GMS 是由 Google 提供的一系列提高用户移动体验的应用和服务,包括各种服务和内购功能,还有一些 Google 的应用:Play 市场,GMail,Chrome,Google 地图,Google+ 等。GMS 提供了很好的特性,但是 GMS 是闭源的。为了获取 GMS 的使用,必须通过 Google 的授权。这部分源代码是不可见的。
- 基于 AOSP 的源码开发独立的 Android 系统 AOSP 是开源的,任何人都可以修改 AOSP 的代码开发独立于 AOSP 的 Android 系统。因为 AOSP 采用 Apache 2.0 授权,所以修改 AOSP 后的代码不需要开源。Amazon 的 Kindle Fire 和众多国产手机厂商的系统都属于这一类。
回到开头的部分,谷歌其实是禁止了华为对 GMS 的使用,虽然国内的手机没有什么影响,但在国外除了 Google 自己的 APP,其他很多 APP 也都是依赖于 GMS 服务的,例如推送 api 等等。
常见软件许可证
|