Bluetooth

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:

  1. Ship updates faster and more frequently with new features, bug and interoperability fixes, and security fixes.
  2. Reduce repetitive work for partners
    1. Reduced overhead of rebasing the codebase every year.
    2. Reduced overhead of rolling out OTAs to legacy devices.
  3. Reduce fragmentation and creating a consistent experience for app developers and users
  4. 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

Mainline Bluetooth module architecture

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, and libbluetooth_jni.so