Bluetooth is an optional Mainline module starting with Android 13. The Bluetooth Mainline module aims to provide a consistent, high quality Bluetooth experience to all Android users.
Motivation
The primary motivation behind the Bluetooth module is to provide a high quality experience to partners, users, and app developers. We will achieve this in a few key ways:
- Ship updates faster and more frequently with new features, bug and interoperability fixes, and security fixes.
- Reduce repetitive work for partners
- Reduced overhead of rebasing the codebase every year.
- Reduced overhead of rolling out OTAs to legacy devices.
- Reduce fragmentation and creating a consistent experience for app developers and users
- Improve global security within the Android ecosystem. A large portion of Android security vulnerabilities involve Bluetooth..
Package format
The package is an APEX containing the Bluetooth APK (currently defined in
packages/modules/Bluetooth/android/app
), our native libraries (libbluetooth.so
and
libbluetooth_jni.so
), our APIs (under
packages/modules/Bluetooth/framework/java/android/bluetooth
), and our HIDL
interfaces.
Module boundary
Figure 1. Bluetooth Module Boundary
We are migrating all of our existing repos into a single one under system/bt
.
Figure 1 represents the current directories that will comprise our module.
Dependencies
The Bluetooth module has dependencies on the following:
- Incoming and outgoing
@hide
API usages that will be cleaned up - Libraries required for the Bluetooth APK,
libbluetooth.so
, andlibbluetooth_jni.so