Das Schwierige beim Testen einer hardwarenahen Mobile-App ist nicht die App — es ist, ein echtes BLE-Gerät vor Code zu bringen, der in einem Emulator läuft.
MacPhone
Ein natives macOS-Device-Lab, das ein echtes Bluetooth-LE-Gerät in einen Emulator bridgt.
MacPhone startet und steuert viele Android-Emulatoren und iOS-Simulatoren von einem Mac aus und bridgt ein echtes Bluetooth-LE-Gerät direkt in einen Emulator — es spiegelt den vollständigen GATT-Baum auf den virtuellen Controller des Emulators, sodass On-Device-Apps die echten Services, Characteristics und das Advertisement sehen, ganz ohne Dongle.
Eine SwiftUI-App, die AVDs und Xcode-Simulatoren verwaltet, sich über CoreBluetooth mit einem physischen BLE-Gerät verbindet, dessen vollständigen GATT-Baum spiegelt und ihn über ein virtuelles Bumble-Peripheral auf dem netsim-Controller des Android-Emulators neu broadcastet — Lese-, Schreib- und Notify-Verkehr wird in beide Richtungen weitergeleitet.
Die getestete emulierte App sieht die echten Services und den Live-Verkehr des Geräts, und Sessions werden sauber abgebaut, ohne verwaiste Peripherals.
Für Mobile-Entwickler, die hardwarenahe Apps testen, ohne mit physischen Geräten und BLE-Dongles zu jonglieren.
Entwickler-Setup
git clone https://github.com/jx-grxf/MacPhone.git && cd MacPhone gh repo clone jx-grxf/MacPhone && cd MacPhone open https://github.com/jx-grxf/MacPhone/releases/tag/v0.2.1 gh release download v0.2.1 -R jx-grxf/MacPhone -p 'MacPhone-0.2.1.dmg' gh release download v0.2.1 -R jx-grxf/MacPhone -p 'MacPhone-0.2.1.zip' Highlights
- Verwaltet Android-Emulatoren (AVDs) und Xcode-iOS-Simulatoren parallel in einer Oberfläche.
- Bridgt ein echtes BLE-Gerät über CoreBluetooth in den Emulator und spiegelt den vollständigen GATT-Baum.
- Leitet Lese-/Schreibzugriffe und Notifications in beide Richtungen weiter — die App unter Test sieht die echte Hardware.
- Baut Sessions sauber ab: trennt abgestandene Clients und räumt das Bridge mit dem Elternprozess auf.