Problem
The Android emulator has a virtual Bluetooth controller but no way to reach real hardware. The usual workarounds are a USB dongle passed through to the emulator, or a library compiled into the app that only exists for testing.
Real Bluetooth LE devices in the Android emulator on your Mac.
MacPhone connects to a Bluetooth LE device over the Mac's built-in radio and publishes it inside the Android emulator. The app you are testing scans, connects, reads, writes and subscribes as it would on a phone, with no USB dongle and no change to its code. The same window runs your Android emulators and Xcode simulators.

The Android emulator has a virtual Bluetooth controller but no way to reach real hardware. The usual workarounds are a USB dongle passed through to the emulator, or a library compiled into the app that only exists for testing.
A SwiftUI app that acts as a CoreBluetooth central, reads the device's GATT table and hands it over a token-protected localhost socket to a Bumble process. That process publishes the same services, name and manufacturer data on netsim, the emulator's controller, and forwards every read, write and notification to the real device.
git clone https://github.com/jx-grxf/MacPhone.git && cd MacPhone