CommunityProgramación y desarrollogithub.com

android-emulator

Ejecuta una aplicación Android en el teléfono del propietario o en el emulador del proyecto: inicia y detiene el emulador, selecciona el dispositivo, compila, instala, abre la aplicación y toma capturas de pantalla. Úsalo siempre que una tarea necesite ejecutar la aplicación Android, en un dispositivo o emulador, o tomar una captura de pantalla de la misma, o cuando el propietario pida iniciar, detener o verificar el emulador.

¿Qué es android-emulator?

Esta habilidad está diseñada para desarrolladores que trabajan con aplicaciones Android y necesitan gestionar la ejecución en dispositivos físicos o emuladores. Proporciona un flujo completo: detecta el teléfono del propietario mediante `adb devices`, selecciona el emulador adecuado (definido en `.claude/android-emulator.md` o mediante `emulator -list-avds`), lo inicia con soporte para arranque rápido y lo detiene para liberar memoria. Luego compila la aplicación (preferiblemente usando scripts del proyecto o comandos manuales con soporte para ABI específica), la instala, la abre y permite interactuar con ella: tomar capturas de pantalla, simular toques, ver logs y cambiar modo oscuro o configuración regional en el emulador. La habilidad prioriza el dispositivo del propietario, pero si no está disponible, usa el emulador del proyecto. Además, recuerda restaurar cualquier cambio realizado y detener el emulador al finalizar.

Compatible con✓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 Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Android: teléfono o emulador

Notas del proyecto

Cada proyecto nombra su emulador y aplicación en .claude/android-emulator.md: el nombre del AVD, el ID de la aplicación (y el del laboratorio de UI, si lo tiene), y los scripts de ejecución propios del proyecto. Léelo primero. Sin él, ejecuta $ANDROID_HOME/emulator/emulator -list-avds y elige el AVD con el nombre del proyecto; si no hay ninguno, pregunta al propietario y luego escribe las notas.

Herramientas: sdk="${ANDROID_HOME:-$HOME/Library/Android/sdk}", adb="$sdk/platform-tools/adb". Gradle necesita un JDK: JAVA_HOME, o el openjdk@21 de Homebrew (/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home), o el incluido con Android Studio (/Applications/Android Studio.app/Contents/jbr/Contents/Home).

Qué dispositivo

Primero va el teléfono del propietario: adb devices lo lista como un serial que no comienza con emulator- (USB o depuración inalámbrica). Sin teléfono, usa el emulador del proyecto. El propietario puede pedir cualquiera; DEVICE=phone, DEVICE=emulator o DEVICE=<serial> es cómo los scripts del proyecto toman esa elección.

Siempre pasa -s <serial> a adb una vez seleccionado un dispositivo, ya que otro podría conectarse mientras tanto.

El emulador

Inícialo solo cuando sea necesario y detenlo cuando la tarea termine, ya que ocupa varios GB de memoria. Usa el scripts/emulator.sh del proyecto cuando lo tenga; de lo contrario, el de esta habilidad scripts/emulator.sh (en el directorio base de la habilidad, mostrado cuando se carga la habilidad), con AVD=<nombre> de las notas:

AVD=<nombre> <dir habilidad>/scripts/emulator.sh up       # sin interfaz; espera hasta que Android haya arrancado, imprime el serial
AVD=<nombre> <dir habilidad>/scripts/emulator.sh status
AVD=<nombre> <dir habilidad>/scripts/emulator.sh down     # guarda la instantánea de arranque rápido, por lo que el próximo up lleva segundos

up apaga primero otros emuladores en ejecución, porque los scripts y adb eligen el primero (KEEP_OTHERS=1 los conserva); WINDOW=1 muestra su ventana, que el propietario puede querer ver. Ejecuta up en segundo plano cuando la compilación pueda continuar mientras tanto. Si falla, su registro está en ${TMPDIR:-/tmp}/emulator-<avd>.log.

Compilar, instalar, abrir

Prefiere los scripts del proyecto (las notas los nombran: un script de ejecución, el script del laboratorio de UI). Hecho a mano:

  1. Compila solo la ABI del dispositivo cuando el proyecto lo soporte (-Pabi=$(adb -s <serial> shell getprop ro.product.cpu.abi), o ABI= para el script del proyecto): las bibliotecas nativas hacen que un APK completo sea lento de enviar por depuración inalámbrica.
  2. adb -s <serial> install -r <apk>. -r conserva los datos de la aplicación; nunca desinstales ni ejecutes pm clear en la aplicación del propietario en su teléfono sin preguntar, ya que contiene sus datos reales.
  3. Ábrelo con adb -s <serial> shell am start --user current -S -f 0x10008000 -n <id app>/<actividad>: -S detiene el proceso anterior para que se ejecute la nueva compilación, --user current es necesario en un teléfono con Carpeta Segura, y las banderas (nueva tarea, limpiando la anterior) evitan que Android reanude una pantalla anterior.

Mirarlo

  • Captura de pantalla: adb -s <serial> exec-out screencap -p > <archivo>.png, luego mira el archivo. Si todo es negro desde el teléfono, significa que está bloqueado: pide al propietario que lo desbloquee.
  • Tocar y escribir para un flujo: adb -s <serial> shell input tap <x> <y>, input text <texto>, input keyevent KEYCODE_BACK; encuentra coordenadas con adb -s <serial> exec-out uiautomator dump /dev/tty.
  • Registros: adb -s <serial> logcat -d --pid=$(adb -s <serial> shell pidof <id app>), o -s <etiqueta> para una etiqueta. Bloqueo: adb -s <serial> logcat -d -b crash.
  • Modo oscuro y configuración regional para casos extremos: adb -s <serial> shell cmd uimode night yes|no; cambia la configuración regional solo en el emulador, no en el teléfono del propietario.

Informa al propietario de qué dispositivo proviene cada resultado. Restaura cualquier cambio que hayas hecho en su teléfono (modo oscuro, por ejemplo) al terminar, y detén el emulador si lo iniciaste.

Individual skills in this repo

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

Skills relacionados