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.
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.
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.
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,
| grepfalla: Windows no tienegrep. El emulador sí. - En Git Bash,
/sdcardse convierte enC:/Program Files/Git/sdcardantes de llegar aadb.
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 |