Android蓝牙发展历程
截至目前为止,Android蓝牙模块共经历了BlueZ → BlueDroid → Fluoride → Gabeldorsche等四个版本演进:
BlueZ
Linux 原生蓝牙栈,主要在Android 4.1及之前版本中使用:
-
实现层次:大部分逻辑在Linux 内核中,用户空间通过 D-Bus 调用。
-
IPC 类型:使用 D-Bus 作为通信机制。
-
缺点:Android 上兼容性差,D-Bus 效率低,接口杂乱。
BlueDroid
Android 4.2开始使用google和Broadcom共同开发的Bluedroid来替代BlueZ.
-
全部迁移到用户空间,内核仅保留 HCI 接口,用户空间实现所有协议逻辑。
-
IPC机制:
-
JNI 层桥接 framework → native stack
-
HAL 用 HIDL/D-Bus 调用更简洁。
-
-
模块结构:清晰分层(BTIF、BTA、BTE),相较 BlueZ 更洁净于维护。
Fluoride
Android 8.0 以后对蓝牙协议栈进行了重构,主要优化是使用HIDL来取代之前的硬件抽象层,方便厂商的接口集成,目前Fluoride 正在逐步迁移到 AIDL,且AAOS 当前版本仍然使用基于 HIDL 的 Fluoride 蓝牙栈:
-
基于 BlueDroid 架构,但重构改良,位于
system/bt/
目录,结构更模块化。 -
硬件抽象机制:统一通过 HIDL 接口,不再依赖 JNI/HAL 分离。
-
构成模块:
-
framework → system service
-
JNI → 本地代码
-
HCI → controller 接口
-
-
性能稳定、测试覆盖好。
Gabeldorsche
谷歌开始在 Android 11 中测试一个名为“Gabeldorsche”的新蓝牙堆栈。在它