Anexo · Herramientas del curso

adb en tu computadora: Windows, macOS y Linux

Las prácticas 5 a 8 le piden cosas al emulador desde la terminal: ver un archivo, cambiar el tamaño de letra, disparar un trabajo. Todo eso es adb. Android Studio lo instala, pero no lo deja listo para la terminal. Aquí se arregla una vez, en tu sistema.

10 min, una sola vez Windows · macOS · Linux Antes de la Práctica 5

Qué es. adb (Android Debug Bridge) es el programa con el que tu computadora le habla a un emulador o a un teléfono conectado: instalar una app, leer sus archivos, cambiar un ajuste, disparar un evento. Android Studio lo usa por dentro todo el tiempo.

El problema. Android Studio lo instala junto con el SDK, pero no lo agrega al PATH, la lista de carpetas donde la terminal busca programas. Por eso, la primera vez que escribes adb en una terminal, la respuesta es alguna de estas:

adb : El término 'adb' no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable.
zsh: command not found: adb
bash: adb: command not found

No es que falte instalar nada: adb ya está en tu computadora. Falta decirle a la terminal dónde.

Verificado en máquina

Todos los comandos de Windows de este anexo se corrieron en Windows 10, en PowerShell 5.1 y en Git Bash, contra el emulador del curso. Las rutas de macOS y Linux son las que Android Studio usa por omisión en esos sistemas; si instalaste el SDK en otro lado, el paso 1 te dice dónde buscar.


1 · Dónde está

adb vive en la carpeta platform-tools del SDK de Android:

Sistema Carpeta
Windows C:\Users\<tu-usuario>\AppData\Local\Android\Sdk\platform-tools
macOS /Users/<tu-usuario>/Library/Android/sdk/platform-tools
Linux /home/<tu-usuario>/Android/Sdk/platform-tools

Si instalaste el SDK en otra carpeta, la ruta exacta está en Android Studio: Settings → Languages & Frameworks → Android SDK → Android SDK Location (en macOS, Settings está en el menú Android Studio). A esa ruta agrégale platform-tools.

2 · Pruébalo sin configurar nada

Antes de tocar el PATH, comprueba que adb existe y ve el emulador. El emulador tiene que estar corriendo. Escribe la ruta completa:

# Windows, PowerShell (la terminal que abre Android Studio en Windows)
& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" devices
# Windows, Git Bash
"$LOCALAPPDATA/Android/Sdk/platform-tools/adb.exe" devices

# macOS
~/Library/Android/sdk/platform-tools/adb devices

# Linux
~/Android/Sdk/platform-tools/adb devices

Lo que tienes que ver:

List of devices attached
emulator-5554	device

Si ves eso, adb funciona. Solo falta no tener que escribir la ruta cada vez.

3 · Déjalo en el PATH, una vez

Windows

En PowerShell, copia las tres líneas:

$pt = "$env:LOCALAPPDATA\Android\Sdk\platform-tools"
$actual = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$actual;$pt", "User")

La tercera línea tarda en regresar, a veces varios minutos. Windows le avisa del cambio a cada ventana abierta y espera a que conteste; al probar este anexo tardó entre uno y cinco minutos, según qué programas estaban abiertos. No la interrumpas: cuando el cursor regresa, ya quedó.

Agrega la carpeta a tu PATH de usuario, sin tocar el del sistema, y no necesita permisos de administrador. Git Bash lo hereda solo: no hay que configurarlo aparte.

No uses setx PATH "%PATH%;…"

Es lo que aparece en muchos tutoriales, y hace dos daños: corta el PATH a 1024 caracteres —se pierden carpetas sin avisar— y copia el PATH del sistema dentro del tuyo. Las tres líneas de arriba no tienen ninguno de los dos problemas.

Si prefieres hacerlo a mano: busca en el menú Inicio "Editar las variables de entorno de esta cuenta", selecciona Path, Editar → Nuevo, y pega la carpeta del paso 1.

macOS

Desde macOS Catalina, la terminal es zsh:

echo 'export PATH="$PATH:$HOME/Library/Android/sdk/platform-tools"' >> ~/.zprofile
source ~/.zprofile

Si lo pusiste en ~/.bash_profile porque así lo decía un tutorial viejo, zsh no lo lee: por eso sigue diciendo command not found.

Linux

Con bash, que es lo más común:

echo 'export PATH="$PATH:$HOME/Android/Sdk/platform-tools"' >> ~/.bashrc
source ~/.bashrc

Si tu terminal es zsh, el archivo es ~/.zshrc.

En los tres sistemas

Cierra la terminal y ábrela otra vez. Y si usas la terminal de Android Studio, cierra Android Studio completo: su terminal copia el PATH al arrancar, y no se entera de cambios posteriores.

4 · Comprueba

En una terminal nueva:

adb version
adb devices

La primera dice Android Debug Bridge version 1.0.41 (o un número parecido); la segunda, tu emulador. Ya puedes seguir las guías tal como están escritas.

5 · Tres reglas para los comandos de las guías

Si el comando lleva | o una ruta que empieza con /, todo lo que va después de adb shell va entre comillas.

adb shell "dumpsys deviceidle | grep mState"
adb shell "ls /sdcard"

Las comillas hacen que el filtro y la ruta los interprete el emulador, no tu computadora. Sin ellas se rompen dos cosas:

  • En PowerShell, | grep falla: Windows no tiene grep. El emulador sí.
  • En Git Bash, /sdcard se convierte en C:/Program Files/Git/sdcard antes de llegar a adb.

Con comillas, el mismo comando funciona igual en PowerShell, Git Bash, macOS y Linux.

Si hay más de un dispositivo, di cuál. Con un emulador y un teléfono conectados, adb no adivina:

adb devices                          # la lista, con sus nombres
adb -e shell getprop ro.product.model   # -e: el emulador
adb -s emulator-5554 shell pidof mx.tec.avisos   # -s: uno por su nombre

Separa comandos con ;, nunca con &&. La terminal de Android Studio en Windows es PowerShell 5.1, donde && es un error. ; funciona en todas.

Problemas comunes

Síntoma Causa Solución
'adb' no se reconoce… · command not found: adb platform-tools no está en el PATH Paso 3
Ya lo agregué y sigue sin reconocerse La terminal (o Android Studio) se abrió antes del cambio Cierra y vuelve a abrir; en Android Studio, ciérralo completo
En macOS sigue sin encontrarlo Lo agregaste a ~/.bash_profile, y la terminal es zsh Usa ~/.zprofile (paso 3, macOS)
no devices/emulators found El emulador no está corriendo Ábrelo desde Device Manager y espera a que termine de arrancar
more than one device/emulator Hay un emulador y un teléfono, o dos emuladores adb -e … o adb -s <nombre> … (paso 5)
El dispositivo sale offline o unauthorized El servidor de adb se quedó en un mal estado, o el teléfono no ha aceptado la depuración adb kill-server y luego adb devices; en un teléfono, acepta el aviso en pantalla
adb server version (…) doesn't match this client (…) Tienes otro adb instalado (Homebrew, un SDK viejo, otro programa) que compite con el de Android Studio Windows: where.exe adb · macOS/Linux: which -a adb. Deja solo el de platform-tools
grep : El término 'grep' no se reconoce Estás en PowerShell y el ` grep` corre en tu computadora
C:/Program Files/Git/sdcard: No such file or directory Git Bash convirtió una ruta que empieza con / Comillas después de adb shell (paso 5)
run-as: package not debuggable La app instalada es de release Córrela desde Android Studio, que instala la versión de depuración
no permissions (missing udev rules?) en Linux Es un teléfono físico, no el emulador Agrega tu usuario al grupo plugdev y las reglas de udev de Android; el emulador no lo necesita