谷歌决定闭源Android?Fake News!

今天下午,各种Android技术群都在讨论一条新闻:Google要终止Android开源。好家伙,这名字够吸睛,要知道Android早些年能从操作系统的血雨腥风中杀出来,靠的正是它的开源策略。如今说不开源?这不妥妥地过河拆桥么?要是真这么做了,Google又如何对得起自己"Do not be evil"的口号呢?

作为一名给AOSP(Android Open Source Project)提交过上千行代码的工程师,我的第一直觉是"Fake News"。于是我找到了新闻最早的出处:Android Authority。文中的核心观点就一句话:以后Android的开发要全部"in private",但代码依旧开源。 媒体人在转述中出现偏差,如果不作恶意揣测的话,只能说他们不懂Android的开发流程,只知道private和close词性接近。

下面我将结合原版的新闻内容和个人经验,分析下Google这项改变的动机,以及带来的影响。

首先,私有(in private)开发并不是一个新鲜玩意。应用开发者关注的framework部分,也即源码中frameworks/base目录下的内容,很早开始就私有开发了。所以,你在AOSP的代码review网站上看不到Google对于framework的绝大部分改动。

Google自己早就公开解释过原因,他们希望开发者能够将精力放在稳定的API上,而不是追踪那些尚在开发、非常不稳定的API。因此,他们把framework这类和app兼容性相关度高的模块归入了私有开发的范畴,但是像bionic、build、art这些和app兼容性没有直接关联的模块,他们依然保持公开(open)开发的节奏。这里的公开开发,指的是Google的人直接基于AOSP的主线(main)版本进行开发,他们的代码提交和review过程都可以通过AOSP的代码review网站被所有人看到。

这样一来,Google内部不同的团队其实是工作在不同的分支上的。譬如build团队可能工作在aosp/main分支上,而framework团队则工作在内部的分支上。这迫使Google经常花时间去在两个版本间合入改动并解决冲突。如今Google希望改变这一现状,我认为节省成本只是一方面的原因,而提升效率、让版本发布更紧凑或许是它更大的动机。 今年的Android 16将要在第二季度就和大家见面,比以往的三季度提前了,这里面和代码工程管理的增效不无关联。

好了,说完动机,再来说说影响。

它会让AOSP的主线分支明显地落后于Google的内部版本,对于尚未发布的版本,以前我们可以通过AOSP的主线分支及时了解bionic/art/build之类模块的改动,但现在只能等到新版本正式发布后才能看到代码。

对于绝大多数人来说,基本是没有影响。这里面既包括应用开发者,也包括各大手机厂商/芯片厂商的系统开发者。

对应用开发者而言,他们的应用只会适配在已发布的系统上,而所有已发布的系统,源码全都是开放的,因此他们可以了解任何想要知道的细节。

对于手机/芯片厂商的系统开发者,因为这些厂家基本都和Google有合作关系,他们内部可以定期高频率地拿到Google最新的代码,因此AOSP代码的滞后对他们没有影响。

但对于那些开源贡献者或者说技术弄潮儿,影响还是不小的。

独立的开源贡献者看不到及时的改动,因此可以说基本断绝了代码提交这条路,除非是针对老版本上的bug fix。而那些指望通过AOSP代码改动了解最新技术进展的朋友,也没了手段。

甚至我在想,各家手机/芯片厂家给Google上游提交代码的路径都得发生改变,因为你在内部版本上发现的bug,可能在AOSP主线上并不存在,这个change怎么提交都是个问题。

在这一点上,我确实看到了Google越来越封闭的态度。可以说,Android是个开源的项目,但不是一个开放的项目。 因为无论是代码提交量,还是贡献的认可程度,它都是和Linux没法比的。也是,凡是公司主导的开源项目,有几个是真正开放的呢?

相关推荐
fatiaozhang952725 分钟前
晶晨S905L3A(B)-安卓9.0-开启ADB和ROOT-支持IPTV6-支持外置游戏系统-支持多种无线芯片-支持救砖-完美通刷线刷固件包
android·游戏·adb·华为·电视盒子·机顶盒rom·魔百盒固件
行墨1 小时前
Kotlin语言的==与===比较操作
android
圣火喵喵教1 小时前
Pixel 8 pro 刷AOSP源码 Debug 详细教程(含救砖)
android
二流小码农2 小时前
鸿蒙开发:使用Ellipse绘制椭圆
android·ios·harmonyos
自不量力的A同学2 小时前
谷歌将 Android OS 完全转变为 “内部开发”
android
行墨2 小时前
Kotlin 的可空类型
android
suren3 小时前
deepseek ai 输入法
android
tangweiguo030519873 小时前
Android并发编程:线程池与协程的核心区别与最佳实践指南
android·kotlin
二流小码农3 小时前
鸿蒙开发:使用Circle绘制圆形
android·ios·harmonyos
行墨3 小时前
Kotlin内置函数之takeIf 和 takeUnless
android