
Cuando necesitamos cambiar el recovery en nuestros terminales, cuando queremos cambiar el SPL, flashear una ROM, acceder al bootloader o utilizar el emulador del SDK de Android, prácticamente siempre terminamos recurriendo a la herramienta ADB incluida en el SDK de Android. Muchas veces repetimos los pasos que encontramos en manuales o webs sin tener claro qué estamos haciendo realmente con cada comando. Este artículo pretende servir como guía extensa, actualizada y lo más práctica posible para que entiendas qué es ADB, cómo funciona y cuáles son sus comandos básicos y avanzados, de forma que la próxima vez que lo utilices sepas exactamente lo que ocurre “por debajo”.
Qué es Android Debug Bridge (ADB) y cómo funciona

Android Debug Bridge (ADB) es una herramienta de línea de comandos que permite comunicar tu ordenador con un dispositivo o emulador Android. Forma parte del paquete de herramientas de plataforma del SDK de Android, y se encuentra en la carpeta platform-tools del SDK. Gracias a ADB podemos instalar y depurar aplicaciones, copiar archivos, lanzar actividades, capturar logs, trabajar con la shell Unix interna del sistema e incluso conectarnos de forma inalámbrica vía WiFi.
Internamente, ADB funciona como un programa cliente-servidor formado por tres componentes bien diferenciados:
- Cliente ADB: es la parte que envía los comandos. Se ejecuta en tu máquina de desarrollo (PC o Mac). Cada vez que escribes un comando
adb ...en el terminal se está usando este cliente. - Daemon (adbd): es un proceso que se ejecuta en segundo plano en el dispositivo o emulador. Se encarga de recibir las órdenes que le envía el cliente y ejecutarlas en el sistema Android.
- Servidor ADB: se ejecuta también en tu ordenador como proceso en segundo plano y gestiona la comunicación entre cliente y daemon. Escucha en el puerto TCP 5037 y mantiene la tabla de dispositivos/emuladores conectados.
Cuando ejecutas por primera vez un comando adb, el cliente comprueba si el servidor está levantado. Si no lo está, lo inicia automáticamente, lo asocia al puerto 5037 y realiza un escaneo de los puertos de los emuladores (pares/impares típicos en el rango 5554-5585) para localizar instancias de adbd activas. Una vez establecidos los enlaces, el servidor puede dirigir cada comando al dispositivo correcto incluso si tienes varias conexiones abiertas (móviles físicos, tablets, emuladores, etc.).
Requisitos previos: SDK de Android, drivers y depuración USB
Para poder utilizar la consola ADB es necesario que tengamos descargado el SDK de Android o, como mínimo, el paquete de Platform Tools en nuestro ordenador. Es recomendable descomprimirlo en una carpeta en la raíz del disco duro (por ejemplo, C:\SDK\ en Windows o /opt/android-sdk/ en Linux) para facilitar el acceso desde la consola. Dentro de esta carpeta encontraremos el directorio platform-tools, donde reside el ejecutable adb.
Nota histórica: antiguas versiones del SDK colocaban adb dentro de la carpeta tools. Muchos tutoriales viejos aún refieren a tools, por lo que, si sigues una guía antigua, comprueba si tu SDK tiene platform-tools o tools y usa la ruta correspondiente.
Además del SDK, para que el sistema reconozca correctamente el teléfono es necesario cumplir estos puntos:
- Activar el modo desarrollador en el dispositivo. Para ello, entra en Ajustes > Información del teléfono y pulsa varias veces sobre Número de compilación hasta que se habiliten las Opciones de desarrollador.
- Dentro de las Opciones de desarrollador, activa la opción Depuración por USB. Cuando conectes el móvil al ordenador, aparecerá un aviso pidiendo que confíes en ese equipo; acepta y, si quieres, marca “Permitir siempre desde este ordenador”.
- En algunos sistemas operativos, es posible que necesites instalar el driver USB específico del fabricante (Windows) o configurar reglas
udev(Linux) para que el dispositivo se detecte correctamente.
Acceder al directorio del SDK y lanzar ADB desde la consola
Para utilizar adb necesitamos abrir una sesión en el terminal si estamos en macOS o Linux, o en la consola de comandos si estamos en Windows. Una vez dentro, debemos situarnos en la carpeta donde está el ejecutable de ADB, normalmente platform-tools dentro del SDK.
En Windows, por ejemplo, si al abrir la consola vemos una línea como C:\>Archivos de programa/Mis documentos/Androidsis/_ significa que estamos dentro del directorio androidsis, a su vez dentro de Mis documentos, dentro de Archivos de programa. Escribiendo cd.. iremos subiendo un nivel en la estructura de directorios hasta llegar a C:\>. Desde ahí podemos entrar en la carpeta donde descomprimimos el SDK, por ejemplo:
cd androidsdk16
Esto nos situaría en C:\>androidsdk16\_. Continuamos usando cd hasta entrar en platform-tools, que es donde se encuentra adb. En Linux o macOS el proceso es similar, aunque las rutas de ejemplo cambiarán según dónde hayamos instalado el SDK.
Si prefieres trabajar desde el propio dispositivo (sin PC), puedes usar una app de terminal para Android como Android Terminal Emulator para ejecutar comandos locales en el dispositivo; ten en cuenta que adb es una herramienta que se ejecuta en el host (ordenador) para comunicarse con el dispositivo, mientras que una terminal en el propio móvil te dará acceso directo a la shell del sistema.
Una vez dentro de este directorio, con sólo escribir adb y pulsar Intro obtendremos un listado con todas las opciones disponibles para ejecutar con este comando, lo que nos sirve también para comprobar que ADB está bien instalado en el sistema.
Conectar y listar dispositivos: comando adb devices
Uno de los primeros comandos que debemos interiorizar es adb devices, que muestra un listado con todos los terminales o emuladores conectados al servidor ADB. Es fundamental para comprobar que nuestro móvil ha sido reconocido y que la depuración USB está autorizada.
Al ejecutar:
adb devices
veremos algo como:
List of devices attached
0403725B09015010 device
Si aparece un identificador seguido de la palabra device, la conexión es correcta. Si vemos offline, unauthorized o directamente no aparece nada, habrá que revisar los permisos de depuración USB, la conexión física, los drivers o las reglas de udev.
Instalación y copia de archivos: comandos adb install, push y pull
ADB incluye varias órdenes muy útiles para gestionar aplicaciones y archivos desde el ordenador:
adb install <path-to-apk>
Por ejemplo:
adb install appmanager.apk
Esta opción nos permite instalar una aplicación en nuestro terminal a partir de un archivo APK almacenado en el ordenador. Si queremos reinstalar manteniendo datos, podemos usar opciones avanzadas como -r.
adb push <local> <remote>
Por ejemplo:
adb push appmanager.apk sdcard/appmanager.apk
Esta opción nos permite copiar un archivo desde nuestro ordenador a una ruta concreta del teléfono, como la tarjeta SD o un directorio interno accesible.
adb pull <remote> <local>
Por ejemplo:
adb pull sdcard/appmanager.apk appmanager.apk
Con este comando conseguimos copiar un archivo desde el teléfono hacia nuestro ordenador, ideal para hacer copias de seguridad manuales de ciertos datos o APKs.
Entrar en la shell del dispositivo con adb shell
Otro comando clave es adb shell. Al ejecutarlo, nos aparecerá una línea de comandos propia del dispositivo, normalmente con el símbolo $ o #, indicándonos que hemos entrado en una sesión de intérprete de comandos (shell Unix) directamente en el sistema Android.
Dentro del shell podremos navegar por el sistema de archivos, crear particiones, directorios, borrar o mover archivos, consultar información del sistema y, en general, usar muchos de los comandos clásicos de un entorno Unix. Algunos de los más habituales son:
- ls – Lista los directorios y archivos existentes en la ruta en la que estemos.
- reboot – Reinicia el terminal desde la línea de comandos.
- rm – Borra un archivo específico.
- rmdir – Borra un directorio vacío.
- cd – Cambia de directorio actual.
- mkdir – Crea un directorio nuevo.
- mkswapp – Crea un sistema de intercambio (swap) en determinados entornos.
- mount – Monta una unidad o partición en el sistema de archivos.
- umount – Desmonta una unidad previamente montada.
- mv – Mueve o renombra un archivo o directorio.
Ejemplos prácticos con ADB y shell:
adb shell mount /sdcard
Montamos la tarjeta SD para poder trabajar con ella desde la shell.
adb shell rm /sdcard/update.zip
Borramos el archivo update.zip de nuestro teléfono de forma directa.
adb push androidsis.zip /sdcard/androidsis.zip
Copiamos el archivo androidsis.zip desde nuestro ordenador a la tarjeta SD del dispositivo.
adb shell umount /sdcard
Desmontamos la tarjeta SD para asegurar que no haya procesos usándola.
Comandos ADB más conocidos y usos habituales
Además de install, push, pull, devices y shell, existen otros comandos ADB muy recurrentes para el usuario avanzado y el desarrollador:
- adb reboot: fuerza un reinicio del dispositivo en modo normal.
- adb reboot bootloader: reinicia directamente en modo bootloader, útil para usar herramientas como fastboot.
- adb reboot recovery: reinicia el terminal en modo recovery personalizado u original.
- adb logcat: muestra en tiempo real los registros (logs) del sistema, muy útil para depurar errores de aplicaciones.
- adb sideload <archivo.zip>: permite enviar un paquete de actualización o ROM al dispositivo desde el PC en modo recovery compatible.
Y algunos comandos de resumen muy utilizados para la gestión del flujo de trabajo diario:
- adb connect [IP]:[PUERTO]: conecta con un dispositivo a través de la red WiFi (normalmente usando el puerto 5555).
- adb disconnect [IP]:[PUERTO]: corta la conexión inalámbrica con ese dispositivo.
- adb shell screencap -p /sdcard/captura.png: realiza una captura de pantalla y la guarda en la memoria del móvil.
- adb shell screenrecord /sdcard/demo.mp4: graba en vídeo la pantalla del dispositivo en un archivo MP4.
- adb kill-server: detiene el servidor ADB si se ha quedado colgado o da errores.
Ejemplos avanzados desde la shell: explorando el sistema de archivos
Cuando lanzamos adb shell y ejecutamos un ls -l en el directorio raíz (/), veremos una estructura muy similar a la de un sistema Linux tradicional, con directorios como /system, /data, /sdcard, /proc, etc. Por ejemplo, si nos movemos a /system/app:
cd /system/app
pwd
ls -l
Obtendremos un listado de los paquetes APK del sistema preinstalados, con sus nombres, permisos y tamaños. Esto nos ayuda a entender qué apps forman parte de la ROM y cómo están distribuidas.
También es frecuente ejecutar comandos como:
adb shell ls /sdcard/Videos/para listar los vídeos almacenados en la tarjeta SD.adb shell rm /sdcard/Videos/*.avipara borrar todos los archivos AVI de esa carpeta.adb install ruta/a/paquete.apkpara instalar una app descargada previamente en el PC.adb push archivo.mp3 /sdcard/Musica/para copiar un MP3 desde el ordenador al móvil.adb pull /sdcard/python_scripts_r0.zip ./para traer un ZIP del dispositivo a nuestro directorio actual del ordenador.
Este patrón de uso -listar, copiar, borrar, instalar- es la base de muchas tareas de administración y desarrollo, y se apoya siempre en la potencia de la shell Unix integrada en Android.
En conjunto, ADB se convierte en una auténtica navaja suiza para trabajar con dispositivos Android: desde operar con archivos y aplicaciones hasta acceder a funciones avanzadas de depuración, todo ello con comandos relativamente sencillos que, una vez interiorizados, agilizan enormemente el trabajo diario tanto de usuarios avanzados como de desarrolladores.
FUENTE | android.com