ADB Friend
Uma ferramenta de linha de comando para desenvolvedores gerenciarem dispositivos Android via ADB.
Documentação
ADB Friend
ADB Friend é uma pequena ferramenta de linha de comando que ajuda você a gerenciar seu dispositivo Android via ADB. Seus recursos foram projetados principalmente para desenvolvedores, mas pode ser útil para todos.
Recursos
- Sincronizar arquivos do seu computador para o seu telefone
- Projetado para dados de teste, ignorando arquivos existentes no dispositivo
- Configurar dispositivo para testes
- Desativar animações, ativar toques, ...
- Desinstalar aplicativos por padrão
- Comando de pacotes
- Aplicar o sinalizador imersivo a todos os pacotes que correspondem ao glob, forçar parada, limpar dados do aplicativo e cache
- Ferramentas extras
- adb-speed (Ajuda a identificar cabos de baixa qualidade)
- Servidor MCP (Model Context Protocol)
Instalação
A instalação pode ser realizada usando Homebrew. Primeiro, você precisará do tap personalizado:
brew tap mikepenz/tap
Em seguida, instale o CLI AdbFriend:
brew install mikepenz/tap/adbfriend
Alternativamente, você pode baixar binários pré-compilados na página de releases.
Uso
ADB Friend é uma ferramenta de linha de comando que pode ser usada em um terminal.
Comece com o comando --help para obter informações e uma visão geral dos vários recursos oferecidos.
adbfriend --help
Servidor MCP
ADB Friend (desde a versão 1.4.0) também fornece um Servidor MCP (Model Context Protocol) que pode ser configurado em ferramentas populares de IA como Claude Desktop, GitHub Copilot, RayCast, ...
Configuração
A localização e os detalhes do arquivo de configuração dependerão da ferramenta utilizada. Abaixo, um exemplo para Claude Desktop.
{ "mcpServers": { "adb-friend": { "command": "/opt/homebrew/bin/adbfriend", "args": [ "mcp", "server" ], "env": { "ANDROID_HOME": "/Users/mikepenz/Development/android/sdk" } } } }
Importante
Se ANDROID_HOME não for fornecido, o adb-server deve ser iniciado manualmente na sua máquina. Caso contrário, uma exceção de conexão será lançada.
Servidor de Depuração
Você pode usar o npx @modelcontextprotocol/inspector para depurar o servidor após iniciá-lo.
Instale e execute o inspetor no seu terminal
npx @modelcontextprotocol/inspector
Em seguida, abra o site (com a URL fornecida no terminal). Inicie o mcp server usando IntelliJ ou o comando real.
A porta padrão é 3001
adbfriend mcp server --sse true
Ferramentas suportadas
| Nome da Ferramenta | Descrição |
|---|---|
| check-adb-speed | Verifica a velocidade da conexão USB de um dispositivo Android para o serial fornecido. |
| clear-installed-package | Limpa os dados do pacote para os nomes de pacotes fornecidos em um dispositivo Android. |
| set-immersive-full-for-package | Define o sinalizador 'immersive-full' para os nomes de pacotes fornecidos em um dispositivo Android. |
| force-stop-process | Força a parada dos nomes de pacotes fornecidos em um dispositivo Android. |
| uninstall-package | Desinstala os nomes de pacotes fornecidos em um dispositivo Android. |
| get-connected-devices | Recupera informações sobre todos os dispositivos Android conectados, incluindo serial, modelo e estado. |
| get-installed-packages | Recupera informações sobre todos os pacotes instalados em um dispositivo Android. Suporta filtragem apenas para aplicativos de terceiros. |
| list_allowed_directories | Lista diretórios que podem ser acessados pelas ferramentas do sistema de arquivos. |
| list-files | Lista arquivos e diretórios em um dispositivo Android. Suporta listagem recursiva com a opção 'recursive'. |
| read-file | Lê o conteúdo de um arquivo em um dispositivo Android. |
| read_multiple_files | Lê o conteúdo de vários arquivos em um dispositivo Android de uma só vez (reduz chamadas LLM). |
| write-file | Escreve conteúdo em um arquivo em um dispositivo Android. |
| create-directory | Cria um diretório em um dispositivo Android. |
| delete | Exclui um arquivo ou diretório em um dispositivo Android. |
| search-files | Procura arquivos que correspondem a um padrão glob sem diferenciar maiúsculas de minúsculas dentro de diretórios permitidos. |
| move_file | Move um arquivo do caminho de origem para o caminho de destino em um dispositivo Android. |
| copy-file-to-host | Copia um arquivo binário do dispositivo Android para o sistema host. |
| capture-screenshot | Captura uma captura de tela de um dispositivo Android e a salva no sistema host. |
| install-apk | Instala um APK no dispositivo Android a partir de um arquivo no sistema host dentro dos caminhos host permitidos. |
Com muito mais ferramentas planejadas para o futuro.
Exemplos de Prompts
uninstall the 'sample' app, but keep its data
force stop the 'sample' app
Do I have a browser installed on the connected emulator?
Organize all files in the Download folder of the connected Android device
Pull all KotlinConf related files from the Android device to the host
Release
O projeto usa shadow para empacotar a ferramenta em um fat-jar e também faz minificação mínima.
./gradlew adbfriend-cli:shadowDistZip
Outros
AboutLibraries
Gerar aboutlibraries.json para adbfriend
./gradlew adbfriend:exportLibraryDefinitions
Gerar aboutlibraries.json para adbfriend-cli
./gradlew adbfriend-cli:exportLibraryDefinitions
Exemplos de Capturas de Tela de Prompts
Claude Desktop
Visual Code
Créditos
Este projeto usa a incrível biblioteca adam de Malinskiy para interagir com adb. O CLI é configurado usando a impressionante biblioteca clikt de ajalt.
Licença
Copyright 2025 Mike Penz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.