摘要:无论是哪家厂商,每款Android手机都有一个共同点:它们的软件基础。厂商可以对Android系统的外观和体验等做深度/个性定制,但底层核心功能依然源自同一个开源基础——Android开源项目(AOSP)。如今,经过16年的发展,Google正在对Androi
无论是哪家厂商,每款Android手机都有一个共同点:它们的软件基础。厂商可以对Android系统的外观和体验等做深度/个性定制,但底层核心功能依然源自同一个开源基础——Android开源项目(AOSP)。如今,经过16年的发展,Google正在对Android的开源开发模式做重大调整,以便优化Android的开发流程。
1,什么是Android开源项目(AOSP)?
Android开源项目(AOSP)是Google在Apache 2.0许可协议下发布的操作系统。该协议允许任何人免费使用、修改并且分发基于AOSP的系统,而无需支付授权费用或公开源代码。这种开放许可模式促进了AOSP的广泛应用,也催生了诸如三星One UI等这样的定制版本。
像许多开源项目一样,AOSP允许第三方开发者提交代码贡献。然而,Google仍然主导AOSP的开发工作,并将Android视为一个完整的产品开发项目,以确保Android作为平台和开源项目的持续发展。因此,Google拥有最终的决策权,决定哪些代码可以合并到AOSP以及何时发布新版本的源代码。同时,Google也会私下开发AOSP的部分组件,以便OEM厂商和开发者可以使用稳定版本,而无需跟踪尚未完成的未来开发工作。
2,Google如何在开源与内部开发之间取得平衡?
为了平衡AOSP的开源特性与产品开发需求,Google维持了两大主要的Android开发分支:公开的AOSP分支——任何人都可以访问;Google内部开发分支——仅限与Google签订Google移动服务(GMS)授权协议的公司访问。虽然部分组件(如Android的蓝牙协议栈)是在AOSP公开开发的,但大部分核心组件(如Android OS框架)都是在Google内部开发的。Google已经对外确认,他们将把所有Android OS系统的开发工作转移到内部分支,以进一步优化开发流程。
3,Google将不再维护两个主要Android分支?
由于Google主要在内部分支开发Android,AOSP分支经常落后于内部版本。例如,对比AOSP纯净版和Google自家基于内部分支开发的Android 16 Beta版本,功能和API之间的差异十分明显。尽管Google采用了基于主干(trunk-based)的开发模式来缩小这一差距,但问题依然存在,并且仍然给Google带来不小的挑战。
这种差异使得Google需要花费大量时间和精力,在AOSP和内部分支之间合并补丁(patch)。由于两个分支的代码结构不同,合并时经常发生冲突。举例来说:屏幕放大功能的补丁在AOSP中增加了一个新的无障碍(Accessibility)设置选项,该选项被添加到设置列表的末尾。然而,由于AOSP和Google内部分支的设置列表长度不同,合并时就会产生冲突。虽然这个问题的修复相对简单,但类似的代码冲突还有很多,给开发带来了额外的负担。Android的新“仅解锁存储区域API” 也遇到了类似的问题。该API在AOSP公开开发,但相关的Android构建标志文件却是在内部分支开发的,因此开发人员不得不手动挑选(cherry-pick)补丁并在AOSP进行调整。由于这样的冲突数不胜数,Google决定放弃当前的双分支开发策略,转而将所有开发工作转移到内部分支。
4,这对我们有什么影响?
Google对外确认,他们仍然会定期发布Android的源代码,所以这并不意味着Android将变成闭源系统。也就是说,当Android 16在今年晚些时候发布时,我们仍然可以获得源代码。此外,Google仍会公开Android的Linux内核分支,因为该部分受GPLv2许可协议约束,必须公开源代码。
但主要的变化在于,部分Android组件的源代码不再频繁更新。目前,一些组件(如构建系统、更新引擎、蓝牙协议栈、虚拟化框架、SELinux配置)是优先在AOSP公开开发的,而大部分核心系统组件(如OS框架)则主要在内部开发。
从下周开始,所有Android开发将完全移至Google内部分支,代码变更的源代码仅在Google发布新版本时才会公开。由于大部分Android组件早已采用此模式,这次调整只是将所有开发工作整合到一个内部分支,从而简化流程。
5,谁会受到影响?
普通用户
这一变化对普通用户几乎没有直接影响。虽然它可能会让Google的开发流程更高效,从而间接影响新版本的开发速度和Bug修复效率,但用户几乎不会察觉到明显的变化。因此,不要指望OS更新会因此加快。
开发者
应用开发者不受影响,因为这次调整仅涉及Android平台开发,而不是应用开发。
平台开发者(如定制ROM开发者)影响也很小,因为他们通常基于特定的AOSP标签(tags)或发布分支(release branches)进行开发,而不是直接使用AOSP主分支。
基于AOSP开发定制系统的公司也基本不受影响,因为AOSP主分支本身就不够稳定,他们通常不会直接依赖它。
AOSP贡献者和开源爱好者
这一消息对习惯于阅读或贡献AOSP代码的开发者来说无疑是个坏消息,因为他们将更难跟踪Android的开发进展。如果没有GMS许可,他们将只能访问滞后数周或数月的代码,使得贡献代码变得更加困难。
科技媒体记者
此次调整意味着记者们将更难通过AOSP代码挖掘Google的产品计划。例如:先前,AOSP代码变更曾提前曝光Pixel的网络摄像(Webcam)功能;代码中的线索帮助推测出Android 16的提前发布;甚至有开发者在AOSP代码中发现了Google Pixel 10的首次公开提及(该代码变更现已被删除)。尽管这些泄露信息可能并未直接促成此次调整,但今后想要通过AOSP代码获取Google开发计划的难度将显著增加。
6,Google的决定是否合理?
从表面上看,这一决定可能会让Google看起来不够“开源”。Google其实有三个选择:维持现状(继续维护两个主要开发分支);完全转向内部开发(当前的决定);完全公开开发(几乎不可能)。考虑到Google过去强调私密开发的重要性,并且近年来已逐步转向基于主干的开发模式,他们选择整合所有开发工作至内部分支,以优化系统开发和源代码发布,是可以理解的。
虽然这一变化对普通用户的影响不大,但对于开源开发者和科技媒体来说,AOSP作为信息来源的作用将大幅下降。
来源:裴裴科技智慧