A native, Finder-style Mac app for browsing an Android phone over USB and copying files both ways.
Download the DMG ·
Documentation
Plug in your phone and DroidDock opens it like a Finder window: Icons, List, Columns and Gallery views with real photo thumbnails, drag and drop, Back/Forward, Get Info, New Folder and Delete. It talks to the phone over MTP ("File transfer" mode, through libmtp) or, when USB debugging is on, over adb, which lists big folders much faster.
| Icons, with every photo in one place | List |
|---|---|
![]() |
|
| Columns | Gallery |
![]() |
![]() |
All screenshots use the built-in demo phone (--args -demo).
Grab DroidDock-<version>.dmg from the latest release,
open it and drag DroidDock into Applications.
Requirements: a Mac with Apple silicon (M1 or later), macOS 26 Tahoe or later. Built and tested with Samsung Galaxy phones; other Android phones usually work too via Connect with USB.
The app is open source and not notarized by Apple, so macOS stops it the first time:
- Open DroidDock once; macOS says it can't verify the developer. Click Done.
- Open System Settings → Privacy & Security, scroll down and click Open Anyway next to DroidDock.
- Confirm with Open Anyway and your password. From then on it opens normally.
Or, in Terminal: xattr -dr com.apple.quarantine /Applications/DroidDock.app
- Unlock the phone and plug it in.
- Tap the USB notification and choose File transfer.
- Quit anything else that grabs the phone: Smart Switch, Android File Transfer, OpenMTP, MacDroid, Image Capture and Photos. Only one program can hold the phone at a time.
DroidDock connects on its own when a Samsung phone is plugged in; otherwise click USB in the toolbar.
For faster browsing, turn on Developer options → USB debugging on the phone and install
adb (brew install --cask android-platform-tools); DroidDock then uses adb automatically.
- Favorites in the sidebar: Images and Videos gather every photo and video from DCIM/Camera, Screenshots, Screen recordings, Pictures and Movies across all storages; Download jumps to the phone's Download folder
- View as Icons / List / Columns / Gallery (⌘1–⌘4), with thumbnails from the phone
- Group by Kind / Date Modified / Size, sort by Name / Kind / Date / Size
- Download, Upload, drag and drop in both directions, and Share through the macOS share sheet
- Search the current folder, Back/Forward (⌘[ ⌘]), Enclosing Folder (⌘↑)
- Double-click to open a file on the Mac, ⌘I Get Info, ⇧⌘N New Folder, ⌘⌫ Delete
Try it without a phone: open /Applications/DroidDock.app --args -demo shows a fake Galaxy
with folders and generated photos. Browsing works; transfers are refused.
brew install libmtp xcodegen
xcodegen generate # project.yml -> DroidDock.xcodeproj
open DroidDock.xcodeproj # ⌘R- Debug loads libmtp from
/opt/homebrew. - Release runs
scripts/embed-dylibs.sh, which copies libmtp + libusb intoContents/Frameworksand rewrites their load paths to@rpath, so the app runs without Homebrew.
scripts/make-dmg.sh # Release build -> dist/DroidDock-<version>.dmgMore in the build guide. Debug libmtp traffic with the env var LIBMTP_DEBUG=9.
| File | Role |
|---|---|
PhoneEngine.swift |
The protocol both connection types implement |
MTPEngine.swift |
Every libmtp call, on one serial queue |
ADBEngine.swift, ADB.swift |
The adb connection: folder listings, transfers, thumbnails |
BrowserModel.swift |
@MainActor app state: connection, folder, selection, transfers |
USBWatcher.swift |
IOKit plug/unplug notifications for Samsung (0x04E8) |
ContentView.swift |
Window, sidebar, Finder-style toolbar, item menu, path and transfer bars |
BrowserViews.swift |
Icons, List, Columns and Gallery views; thumbnails and previews |
WiFiConnectView.swift |
Wireless-debugging pairing (built, currently hidden) |
DemoPhone.swift |
Fake phone for -demo |
DroidDockApp.swift |
Entry point and menus; releases the phone on quit |
DroidDock is MIT-licensed. The release build bundles libmtp and libusb, which are LGPL-2.1 and dynamically linked; see THIRD_PARTY_NOTICES.md.




