emulador-android

Executar um aplicativo Android no telefone do proprietário ou no emulador do projeto — iniciar e parar o emulador, escolher o dispositivo, compilar, instalar, abrir o aplicativo e tirar capturas de tela. Use sempre que uma tarefa precisar que o aplicativo Android esteja em execução, em um dispositivo ou emulador, ou uma captura de tela dele, ou quando o proprietário pedir para iniciar, parar ou verificar o emulador.

O que é emulador-android?

A habilidade **android-emulator** permite que um agente de IA gerencie de forma autônoma a execução de um aplicativo Android em um dispositivo físico ou emulador. Ela é útil para desenvolvedores que precisam testar, depurar ou capturar screenshots de seus aplicativos Android de forma automatizada, especialmente em fluxos de CI/CD ou assistência remota. A habilidade suporta plataformas como Claude Code, Cursor e Codex, e funciona lendo as configurações do projeto em `.claude/android-emulator.md`, que define o nome do AVD, o ID do aplicativo e scripts personalizados. O agente prioriza o telefone do proprietário quando conectado, caso contrário utiliza o emulador do projeto, garantindo que comandos adb sejam direcionados ao dispositivo correto com `-s <serial>`. O emulador é iniciado sob demanda e parado ao final da tarefa para economizar memória, utilizando scripts internos ou do projeto. A habilidade também oferece comandos para compilar apenas a ABI necessária, instalar com `adb install -r`, abrir o aplicativo com `am start`, e interagir com a interface via toques, texto, capturas de tela e logs, sempre restaurando alterações feitas no dispositivo do proprietário.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chencohensolutions/claude-skills/tree/HEAD/plugins/android-emulator/skills/android-emulator

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Android: telefone ou emulador

Notas do projeto

Cada projeto nomeia seu emulador e aplicativo em .claude/android-emulator.md: o nome do AVD, o ID do aplicativo (e o do laboratório de UI, se houver) e os scripts de execução próprios do projeto. Leia-o primeiro. Sem ele, execute $ANDROID_HOME/emulator/emulator -list-avds e escolha o AVD com o nome do projeto; se não houver nenhum, pergunte ao proprietário e depois escreva as notas.

Ferramentas: sdk="${ANDROID_HOME:-$HOME/Library/Android/sdk}", adb="$sdk/platform-tools/adb". O Gradle precisa de um JDK: JAVA_HOME, senão o openjdk@21 do Homebrew (/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home), senão o que vem com o Android Studio (/Applications/Android Studio.app/Contents/jbr/Contents/Home).

Qual dispositivo

O telefone do proprietário vem primeiro: adb devices lista-o como um serial que não começa com emulator- (depuração USB ou sem fio). Sem telefone, use o emulador do projeto. O proprietário pode pedir qualquer um; DEVICE=phone, DEVICE=emulator ou DEVICE=<serial> é como os scripts do projeto recebem essa escolha.

Sempre passe -s <serial> para o adb depois que um dispositivo for escolhido, pois outro pode conectar-se enquanto isso.

O emulador

Inicie-o apenas quando necessário e pare-o quando a tarefa estiver concluída, pois ele consome vários GB de memória. Use o scripts/emulator.sh do projeto quando existir; caso contrário, use o scripts/emulator.sh desta habilidade (no diretório base da habilidade, mostrado quando a habilidade é carregada), com AVD=<nome> das notas:

AVD=<nome> <dir da habilidade>/scripts/emulator.sh up       # sem interface; aguarda o Android inicializar, imprime o serial
AVD=<nome> <dir da habilidade>/scripts/emulator.sh status
AVD=<nome> <dir da habilidade>/scripts/emulator.sh down     # salva o snapshot de inicialização rápida, para que a próxima inicialização leve segundos

up desliga outros emuladores em execução primeiro, porque scripts e adb escolhem o primeiro (KEEP_OTHERS=1 mantém-nos); WINDOW=1 mostra sua janela, que o proprietário pode querer assistir. Execute up em segundo plano quando a compilação puder continuar enquanto isso. Se falhar, seu log estará em ${TMPDIR:-/tmp}/emulator-<avd>.log.

Compilar, instalar, abrir

Prefira os scripts do projeto (as notas os nomeiam: um script de execução, o script do laboratório de UI). Feito manualmente:

  1. Compile apenas a ABI do dispositivo quando o projeto suportar (-Pabi=$(adb -s <serial> shell getprop ro.product.cpu.abi), ou ABI= para o script do projeto): as bibliotecas nativas tornam um APK completo lento para enviar via depuração sem fio.
  2. adb -s <serial> install -r <apk>. -r mantém os dados do aplicativo; nunca desinstale ou execute pm clear no aplicativo do proprietário no telefone dele sem perguntar, pois contém dados reais.
  3. Abra-o com adb -s <serial> shell am start --user current -S -f 0x10008000 -n <id do app>/<activity>: -S para o processo antigo para que a nova compilação execute, --user current é necessário em um telefone com Pasta Segura, e as flags (nova tarefa, limpando a antiga) impedem o Android de retomar uma tela anterior.

Observá-lo

  • Captura de tela: adb -s <serial> exec-out screencap -p > <arquivo>.png, depois veja o arquivo. Tela preta no telefone significa que está bloqueado: peça ao proprietário para desbloqueá-lo.
  • Toque e digite para um fluxo: adb -s <serial> shell input tap <x> <y>, input text <texto>, input keyevent KEYCODE_BACK; encontre coordenadas com adb -s <serial> exec-out uiautomator dump /dev/tty.
  • Logs: adb -s <serial> logcat -d --pid=$(adb -s <serial> shell pidof <id do app>), ou -s <tag> para uma tag. Crash: adb -s <serial> logcat -d -b crash.
  • Modo escuro e localidade para casos extremos: adb -s <serial> shell cmd uimode night yes|no; altere a localidade apenas no emulador, não no telefone do proprietário.

Informe ao proprietário de qual dispositivo cada resultado veio. Reverta qualquer alteração que você fez no telefone dele (modo escuro, por exemplo) ao finalizar e pare o emulador se você o iniciou.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas