A simple, good-looking file explorer for Android devices over ADB, packaged as a
self-contained macOS app. adb (Google platform-tools) is bundled inside the app —
nothing needs to be installed on the Mac that runs it.
- Device picker with live plug/unplug detection, model + Android version + storage info
- Browse any folder (starts at
/sdcard), breadcrumbs, back/up, ⌘F filter - List/grid view toggle — the grid shows lazy-loaded image thumbnails
- Selecting an image in list view opens a side preview panel
- Download files/folders (
adb pull) with progress bar - Upload via button or drag & drop — drop anywhere for the current folder, or onto a specific folder (it highlights) to upload into it
- Copy/paste: ⌘C/⌘V or context menu. In-app copy duplicates on the device (never overwrites — Finder-style "copy" names); pasting files copied in Finder pushes them to the device; "Copy to Mac" puts the files on the macOS clipboard for pasting in Finder
- Double-click a file to pull it to a temp folder and open it with the default Mac app (temp files are cleaned up when the app quits)
- New folder, rename, delete (with confirmation), multi-select (⌘/⇧ click, ⌘A)
- Right-click context menu incl. "Copy path"
- Light + dark mode, follows the system theme
Download ADB-Explorer-<version>.zip from the Releases page (works on
Apple Silicon and Intel Macs). Unzip, drag ADB Explorer.app to /Applications (or
anywhere), then first launch only: right-click the app → Open → Open. That step
is needed because the app is ad-hoc signed, not notarized with an Apple Developer
certificate.
If macOS still refuses, run: xattr -cr "/path/to/ADB Explorer.app" and open again.
- Enable USB debugging on the phone (Settings → Developer options).
- Plug it in, accept the "Allow USB debugging?" prompt on the phone.
- Launch ADB Explorer. The device appears in the top-right picker.
npm install # once
./scripts/fetch-platform-tools.sh # once, downloads Google's adb/fastboot binaries
npm start # run from source (uses ./platform-tools/adb)
npm run dist # build dist/ADB Explorer.app + shareable zip (universal)platform-tools/ is gitignored (Google's redistributable binaries, ~37 MB) — run the
fetch script once after cloning to populate it.
Layout:
main.js— Electron main process: adb wrapper, ls parsing, transfers, IPCpreload.js— context bridge between main and rendererrenderer/— UI (vanilla HTML/CSS/JS, no build step)platform-tools/— Google adb binaries, bundled into the app at package timebuild.sh— icon generation + electron-packager + ad-hoc codesign + zip
Notes:
- The app talks to the device with
adb shell ls -laand parses toybox output; paths are single-quote escaped, so names with spaces/quotes work. - Set
ADB_EXPLORER_SHOT=/path/out.pngto capture a screenshot of the window 4 s after launch (used for automated UI checks). AddADB_EXPLORER_TEST_JS='<js>'to run JS in the renderer first (screenshot then fires 4 s after the JS). - To build Apple-Silicon-only (halves the size), change
--arch=universalto--arch=arm64inbuild.sh.
Made by Matteo Miceli.