谷歌决定闭源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没法比的。也是,凡是公司主导的开源项目,有几个是真正开放的呢?

相关推荐
皮皮高25 分钟前
itvbox绿豆影视tvbox手机版影视APP源码分享搭建教程
android·前端·后端·开源·tv
EnzoRay1 小时前
MotionEvent
android
玲小珑1 小时前
Auto.js 入门指南(七)定时任务调度
android·前端
墨狂之逸才2 小时前
adb常用命令调试
android
YoungForYou2 小时前
Android端部署NCNN
android
移动开发者1号2 小时前
Jetpack Compose瀑布流实现方案
android·kotlin
移动开发者1号2 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·kotlin
移动开发者1号2 小时前
ListView与RecyclerView区别总结
android·kotlin
移动开发者1号2 小时前
OkHttp 3.0源码解析:从设计理念到核心实现
android·kotlin
小草帽学编程6 小时前
鸿蒙Next开发真机调试签名申请流程
android·华为·harmonyos