Hey r/androiddev 👋
A few years ago I built Spock ADB, an Android Studio plugin to make some of my everyday ADB workflows easier.
Then, like many side projects, I stopped actively working on it for a while.
Recently I came back to the project and started rebuilding and expanding it again. What began as a collection of useful ADB actions has gradually turned into more of a debugging workspace for Android, centered around one selected device + app.
The original problem is still the same:
Android Studio → Terminal → adb → Logcat → device Settings → back to Android Studio
I wanted to reduce that context switching and keep more of the debugging workflow inside the IDE.
Spock follows your Android Studio run target by default, and that same device + app is shared across its screen inspector, Logcat, storage, background work, actions, timeline, and AI tools.
A few of the things I've added while working on it againDiagnose Current Screen
Instead of manually gathering context when something looks wrong, Spock can collect:
- Current Activity and Fragments
- activity back stack
- screenshot
- relevant Logcat problems
- UI + accessibility information
- process state
- permissions
- jobs and alarms
- Doze / standby / battery state
Activities and fragments can also link directly back to their source in the project.
Debug TimelineThis is probably one of my favorite additions.
It puts debugging events on one timeline:
- Activity / Fragment lifecycle
- process starts and deaths
- crashes and ANRs
- warnings and errors
- actions executed through Spock
- storage changes
- jobs
- device state changes
- AI/MCP calls
You can select a range and copy/export it when creating a bug report.
UI TreeThe UI inspector supports Views, Compose and hybrid screens.
You can inspect semantics, bounds, text, content descriptions and test tags, plus:
- jump from an element to its source
- generate Compose / UI Automator selectors
- detect ambiguous selectors
- run basic accessibility checks
- inspect Compose recompositions
- Restart / Force Stop / Attach Debugger
- Process death testing for state restoration
- grant / revoke permissions
- browse + edit SharedPreferences and Preferences DataStore
- app-scoped Logcat with crash / ANR / network filters
- send FCM test messages over ADB without a registration token
- deep links
- HTTP proxy
- Don't Keep Activities / Show Taps / Layout Bounds / animation scales
- inspect WorkManager / JobScheduler jobs and alarms
- simulate Doze, standby bucket, battery and charging conditions
- ADB command runner with autocomplete, history and favourites
There's also a searchable Spock Actions popup for running common actions without opening the tool windows.
AI / MCPOne of the bigger things I added after coming back to the project is a built-in MCP server.
Spock exposes 69 structured Android debugging tools to Claude Code, Cursor and other MCP clients.
The goal isn't to simply give an AI agent shell access to adb.
It's to give it structured access to the same debugging information available in the IDE:
Activity · Fragments · UI tree · Logcat · Screenshots · Storage · Background work · Device state
It can also perform things like:
Launch · Tap · Input text · Deep links · lifecycle operations
MCP is off by default, destructive actions can require approval, and tool calls are visible in the IDE.
There's also Copy screen for AI, which generates a redacted diagnosis of the current screen.
Free + open sourceJetBrains Marketplace:
https://plugins.jetbrains.com/plugin/11591-spock-adb
GitHub:
https://github.com/WahdanZ/SpockAdb
Coming back to an old project after years has been interesting because I'm basically solving the same Android debugging annoyances again, but with much better tooling available now.
I'd love some feedback from people here:
What Android debugging workflow still makes you leave the IDE or run an adb command manually?
That's usually where I get ideas for what to improve next.
submitted by /u/midowahdan[link] [comments]