安卓到底是不是100%开源?
我也来分析下,我做Android 无线相关开发工作的,我从这个角度来说吧.
安卓并非 100% 开源,其开源核心为安卓开源项目(AOSP),但实际设备搭载的安卓系统包含大量闭源组件,如谷歌移动服务(GMS)、硬件驱动、厂商定制层等。如我做的高通无线 WiFi 和蓝牙来看,其底层驱动、部分高级特性及配套服务多为闭源,仅部分上层框架与基础适配代码开源。
(创作不易,大家认可的话,帮忙点个赞哦)
接下来我详细介绍下WiFi 和 蓝牙那些是闭源的.
从Android WiFi 架构图来看 下面的 WiFi Firmware是看不到的.

这个WiFi Firmware就是高通的WiFi 固件bdwlan.bin文件,主要提供射频参数、硬件校准数据与 MAC 地址等关键配置,保障 Wi-Fi 射频性能、合规性与兼容性,由 CNSS2 驱动加载,属闭源二进制文件。
WLAN.HL.3.2.4\wlan_proc\wlan\halphy_tools\host\bdfUtil\qca61x0\bdf\bdwlan.bin

比如蓝牙的固件在下面这个目录下
BTFM.CHE.2.1.6\btfm_proc\bt\build\ms\bin\WCN3990
如果要临时替换的,使用如下命令进行替换
adb push crbtfw21.tlv /vendor/bt_firmware/image
adb push crnv21.bin /vendor/bt_firmware/image
adb shell sync
至于你最后说的一句话,手机厂商做不到自己去弄系统级别的更新,只能在谷歌开发的最新版本上去更新,那么安卓就不是100%的开源.
我也这么认为的,大部分都是基于谷歌发布的最新安卓版本,再做二次修改、适配,手机厂商做不到完全自主、从零开发系统级更新,如果从零开始弄,成本太高了,加上本身这行业利润太低了.
还有芯片层面:高通 WiFi、蓝牙等核心硬件,被闭源组件锁死,是不允许不允许随意修改、不允许独立重构。
所以就会出现一个很有趣的现象,就是每次谷歌更新安卓大版本,厂商必须等高通先发布对应新版安卓的适配闭源驱动、固件、工具链。然后找他们要对于的高通基线代码去做.如果没有高通的闭源支持,就算厂商拿到了谷歌的 AOSP,也做不出能正常用 WiFi、蓝牙的系统更新。
所以现在大家都这样干的:
- 拿到谷歌最新的 AOSP 代码。
- 拿到高通等芯片厂商适配该版本的闭源驱动、固件、硬件配置。
- 把两者整合,再加上自己的 UI、功能、预装应用,编译打包。
- 测试后推送给用户。
(创作不易,大家认可的话,帮忙点个赞哦)
我也是Android 无线蓝牙和WiFi 开发工程师,我写了几百篇这样相关的文章,大家有兴趣可以去我的专栏去看下.