Skip to content

Most visited

Recently visited

navigation

Android Debug Bridge

Android Debug Bridge (ADB) es una herramienta de líneas de comandos versátil que te permite comunicarte con una instancia de un emulador o un dispositivo Android conectado. Esta herramienta proporciona diferentes acciones en dispositivos, como la instalación y la depuración de apps, y proporciona acceso a un shell Unix que puedes usar para ejecutar varios comandos en un emulador o un dispositivo conectado. Es un programa cliente-servidor que incluye tres componentes:

Puedes encontrar la herramienta adb en android_sdk/platform-tools/.

Cómo funciona ADB

Cuando inicias un cliente ADB, el cliente primero comprueba si hay un proceso del servidor de ADB en ejecución. Si no lo hay, inicia el proceso del servidor. Cuando se inicia el servidor, este se vincula con el puerto TCP local 5037 y busca comandos enviados por los clientes de ADB; todos los clientes de ADB usan el puerto 5037 para comunicarse con el servidor de ADB.

Luego, el servidor establece conexiones con todas las instancias de emuladores o dispositivos en ejecución. Localiza las instancias de emuladores o dispositivos escaneando puertos con números impares en el rango de 5555 a 5585, que usan los emuladores y dispositivos. Cuando el servidor encuentra un daemon de ADB, establece una conexión con ese puerto. Ten en cuenta que cada instancia del emulador o dispositivo adquiere un par de puertos secuenciales; un puerto con número par para las conexiones de la consola y uno con número impar para las conexiones de ADB. Por ejemplo:

Emulador 1, consola: 5554
Emulador 1, adb: 5555
Emulador 2, consola: 5556
Emulador 2, adb: 5557
y así sucesivamente...

Como se muestra, la instancia del emulador conectada al ADB en el puerto 5555 es la misma que la instancia cuya consola se encarga de la recepción en el puerto 5554.

Una vez que el servidor establece conexiones con todas las instancias del emulador, puedes usar comandos de ADB para acceder a esas instancias. Dado que el servidor administra las conexiones con las instancias del emulador o dispositivo y maneja comandos de diferentes clientes de ADB, puedes controlar cualquier instancia del emulador o dispositivo desde cualquier cliente (o desde una secuencia de comandos).

Habilitar la depuración de ADB en tu dispositivo

Para usar ADB con un dispositivo conectado a través de USB, debes habilitar USB debugging en la configuración del sistema del dispositivo, que se encuentra en Developer options.

En Android 4.2 y versiones posteriores, la pantalla Developer options se encuentra oculta de forma predeterminada. Para poder visualizarla, dirígete a Settings > About phone y presiona Build number siete veces. Cuando regreses a la pantalla anterior, verás Developer options en la parte inferior.

En algunos dispositivos, la pantalla Developer options puede encontrarse en otro lugar o tener un nombre diferente.

Ahora puedes conectar tu dispositivo con USB. Puedes verificar que tu dispositivo esté conectado ejecutando adb devices desde el directorio android_sdk/platform-tools/. Si estás conectado, verás el nombre del dispositivo en la lista como “device” (dispositivo).

Nota: Cuando conectas un dispositivo con Android 4.2.2 o una versión posterior, en el sistema se muestra un diálogo en el que se solicita aceptar una clave RSA para realizar la depuración a través de esta computadora. Este mecanismo de seguridad protege los dispositivos del usuario porque garantiza que la depuración a través de USB y otros comandos de ADB no puedan ejecutarse a menos que puedas desbloquear el dispositivo y aceptar el contenido del diálogo.

Para obtener más información acerca de cómo establecer una conexión con un dispositivo mediante conexiones USB, lee Ejecutar apps en un dispositivo de hardware.

Conectarse a un dispositivo a través de Wi-Fi

ADB generalmente se usa a través de USB. No obstante, también se puede usar a través de Wi-Fi, como se describe aquí.

  1. Conecta tu dispositivo Android y la computadora host ADB a una red Wi-Fi común a la que ambos puedan acceder. Ten en cuenta que no todos los puntos de acceso son adecuados; quizá necesites usar un punto de acceso cuyo firewall esté configurado correctamente para admitir ADB.

    Nota: Si intentas conectarte a un dispositivo Android Wear, haz que se conecte a la red Wi-Fi por la fuerza desactivando el Bluetooth del teléfono conectado a él.

  2. Conecta el dispositivo a la computadora host con un cable USB.
  3. Configura el dispositivo de destino para que busque una conexión TCP/IP en el puerto 5555.
    $ adb tcpip 5555
    
  4. Desconecta el cable USB del dispositivo de destino.
  5. Busca la dirección IP del dispositivo Android. Por ejemplo, en un dispositivo Nexus, puedes buscar la dirección IP en Settings > About tablet (o About phone) > Status > IP address. O bien, en un dispositivo Android Wear, puedes buscar la dirección IP en Settings > Wi-Fi Settings > Advanced > IP address.
  6. Conéctate al dispositivo; identifícalo por la dirección IP.
    $ adb connect device_ip_address
    
  7. Confirma que tu computadora host esté conectada al dispositivo de destino:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

¡Ya estás listo para empezar!

Si se pierde la conexión de ADB:

  1. Asegúrate de que tu host aún esté conectado a la misma red Wi-Fi a la que esté conectado el dispositivo Android.
  2. Vuelve a conectarte ejecutando el paso adb connect nuevamente.
  3. Como alternativa, si eso no funciona, restablece tu host ADB:
    adb kill-server
    

    Luego vuelve a comenzar desde el principio.

Realizar consultas de dispositivos

Antes de emitir comandos de ADB, resultará útil conocer las instancias del emulador o dispositivo conectadas al servidor de ADB. Puedes generar una lista de emuladores o dispositivos asociados usando el comando devices:

adb devices

En respuesta, ADB imprime esta información de estado para cada instancia:

El resultado tiene un formato como el siguiente:

List of devices attached
serial_number state

Aquí te mostramos un ejemplo en el que podrás observar el comando devices y su resultado:

adb devices
List of devices attached
emulator-5554  device
emulator-5556  device
emulator-5558  device

Enviar comandos a un dispositivo específico

Si se encuentran en ejecución varias instancias del emulador o dispositivo, debes especificar una instancia de destino cuando emitas comandos de ADB. Para hacerlo, usa la opción -s en los comandos. El uso de la opción -s es el siguiente:

adb -s serial_number command 

Como se muestra, para especificar la instancia de destino para un comando debes usar su número de serie asignado por ADB. Puedes usar el comando devices para obtener los números de serie de la ejecución de instancias del emulador o dispositivo. Por ejemplo:

adb -s emulator-5556 install helloWorld.apk

Ten en cuenta que si emites un comando sin especificar una instancia de destino en el emulador o dispositivo cuando haya varios dispositivos disponibles, ADB generará un error.

Si hay varios dispositivos disponibles (de hardware o emulados), pero solo uno es un emulador, simplemente usa la opción -e para enviar comandos al emulador. Asimismo, si hay varios dispositivos pero solo un dispositivo de hardware asociado, usa la opción -d para enviar comandos al dispositivo de hardware.

Instalar una app

Puedes usar ADB para copiar una aplicación de tu computadora de desarrollo e instalarla en una instancia del emulador o dispositivo. Para hacerlo, usa el comando install. Con el comando, debes especificar la ruta de acceso al archivo APK que desees instalar:

adb install path_to_apk

Para obtener más información sobre cómo crear un archivo APK que puedas instalar en una instancia del emulador o dispositivo, consulta Compilar y ejecutar tu app.

Ten en cuenta que si usas Android Studio no necesitas emplear ADB (ni aapt) directamente para instalar tu aplicación en el emulador o dispositivo. En su lugar, Android Studio se encarga del empaquetado y de la instalación de la aplicación.

Configurar la redirección de puertos

Puedes usar el comando forward para configurar la redirección de puertos arbitraria; es decir, la redirección de solicitudes de un puerto específico del host a otro puerto en una instancia del emulador o dispositivo. Aquí te mostramos la manera de configurar la redirección del puerto 6100 del host al puerto 7100 del emulador o dispositivo:

adb forward tcp:6100 tcp:7100

También puedes usar ADB para configurar la redirección a determinados sockets de dominio UNIX abstractos, como se ilustra aquí:

adb forward tcp:6100 local:logd 

Copiar archivos a un dispositivo o desde este

Puedes usar los comandos de ADB pull y push para copiar archivos a una instancia de un emulador o dispositivo, o y desde ella. A diferencia del comando install, que solo copia un archivo APK en una ubicación específica, los comandos pull y push te permiten copiar directorios y archivos arbitrarios a cualquier lugar de una instancia del emulador o dispositivo.

Para copiar un archivo o directorio (y sus subdirectorios) desde el emulador o dispositivo, usa

adb pull remote local

Para copiar un archivo o directorio (y sus subdirectorios) al emulador o dispositivo, usa

adb push local remote

En los comandos, local y remote hacen referencia a las rutas de acceso de los archivos o el directorio de destino en tu máquina de desarrollo (local) y en la instancia del emulador o dispositivo (remoto). Por ejemplo:

adb push foo.txt /sdcard/foo.txt

Detener el servidor de ADB

En algunos casos, podría ser necesario que finalices el proceso del servidor de ADB y luego lo reinicies para resolver el problema (p. ej., si ADB no responde a un comando).

Para detener el servidor de ADB, usa el comando adb kill-server. Luego podrás reiniciar el servidor emitiendo cualquier otro comando de ADB.

Referencia de comandos de ADB

Puedes emitir comandos de ADB desde una línea de comandos en tu máquina de desarrollo o desde una secuencia de comandos. El uso es el siguiente:

adb [-d|-e|-s serial_number] command

Si hay un solo emulador en ejecución o un solo dispositivo conectado, de forma predeterminada, el comando de ADB se envía a ese dispositivo. Si hay varios emuladores ejecutándose o diferentes dispositivos conectados, debes usar la opción -d, -e o -s para especificar el dispositivo de destino al que debe dirigirse el comando.

En la tabla siguiente se incluyen todos los comandos de ADB admitidos y se explican su significado y uso.

Tabla 1: Comandos de ADB disponibles.

Categoría Comando Descripción Comentarios
Dispositivo de destino -d Dirige un comando de ADB al único dispositivo USB conectado. Muestra un error si hay más de un dispositivo USB conectado.
-e Dirige un comando de ADB a la única instancia del emulador que esté en ejecución. Muestra un error si hay más de una instancia del emulador en ejecución.
-s serial_number Dirige un comando de ADB a una instancia específica del emulador o dispositivo, a la que se hace referencia por su número de serie asignado por ADB (como “emulator-5556”). Consulta Cómo dirigir comandos a una instancia específica del emulador o dispositivo.
General devices Imprime una lista de todas las instancias del emulador o dispositivo conectado. Para obtener más información, mira Consulta de instancias del emulador o dispositivo.
help Imprime una lista de los comandos de ADB admitidos.  
version Imprime el número de versión de ADB.  
Depuración logcat [option] [filter-specs] Imprime datos del registro en la pantalla.  
bugreport Imprime datos de dumpsys, dumpstate y logcat en la pantalla para el informe de errores.  
jdwp Imprime una lista de los procesos JDWP disponibles en un dispositivo determinado. Puedes usar la especificación de redirección de puertos forward jdwp:pid para establecer una conexión con un proceso JDWP específico. Por ejemplo:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
Datos install path_to_apk Inserta una aplicación de Android (especificada como ruta de acceso completa a un archivo APK) en un emulador o dispositivo.  
pull remote local Copia un archivo especificado de una instancia del emulador o dispositivo en tu computadora de desarrollo.  
push local remote Copia un archivo especificado de tu computadora de desarrollo a una instancia del emulador o dispositivo.  
Puertos y redes forward local remote Envía conexiones de socket desde un puerto local especificado a un puerto remoto especificado en la instancia del emulador o dispositivo. Las especificaciones de puerto pueden usar los siguientes esquemas:
  • tcp:port_number
  • local:unix_domain_socket_name
  • dev:character_device_name
  • jdwp:pid
ppp tty [parm]... Es preferible ejecutar PPP en lugar de USB.
  • tty: tty para la transmisión de PPP. Por ejemplo: dev:/dev/omap_csmi_ttyl.
  • [parm]... : cero o más opciones PPP o PPPD, como defaultroute, local y notty, entre otras.

Ten en cuenta que no debes iniciar automáticamente una conexión PPP.

Creación de secuencias de comandos get-serialno Imprime la string del número de serie de la instancia de ADB. Para obtener más información, mira Consulta de instancias del emulador o dispositivo.
get-state Imprime el estado en ADB de una instancia del emulador o dispositivo.
wait-for-device Bloquea la ejecución hasta que el dispositivo esté en línea; es decir, hasta que el estado de la instancia sea device. Puedes anexar este comando a otros comandos de ADB, en cuyo caso ADB esperará hasta que se conecte la instancia del emulador o dispositivo antes de emitir otros comandos. A continuación, te mostramos un ejemplo:
adb wait-for-device shell getprop
Ten en cuenta que este comando no hace que ADB espere hasta que se haya iniciado todo el sistema. Por ese motivo, no debes anexarlo a otros comandos que requieran el inicio de todo el sistema. A modo de ejemplo, install requiere el administrador de paquetes de Android, que está disponible solo después de que el sistema se haya iniciado por completo. Un comando como
adb wait-for-device install app.apk
emitirá el comando install no bien la instancia del emulador o el dispositivo se conecte al servidor de ADB, pero antes de que el sistema Android se inicie por completo, por lo que produciría un error.
Servidor start-server Verifica si está en ejecución el proceso del servidor de ADB. Si esto no sucede, lo inicia.  
kill-server Finaliza el proceso del servidor de ADB.  
Shell shell Inicia un shell remoto en la instancia de destino en el emulador o dispositivo. Para obtener más información, consulta Emitir comandos del shell.
shell shell_command Emite un comando del shell en la instancia de destino en el emulador o dispositivo y luego sale del shell remoto.

Emitir comandos del shell

Puedes usar el comando shell para emitir comandos de dispositivo a través de ADB, con o sin ingresar al shell remoto de ADB en el emulador o dispositivo. Para emitir un solo comando sin ingresar a un shell remoto, usa el comando shell de esta manera:

adb [-d|-e|-s serial_number] shell shell_command

O ingresa un shell remoto en un emulador o dispositivo de la siguiente manera:

adb [-d|-e|-s serial_number] shell

Cuando estés listo para salir del shell remoto, presiona Control + D o escribe exit.

Los ejecutables del comando shell se guardan en el sistema de archivos del emulador o dispositivo, en /system/bin/.

Llamar al administrador de actividades (am)

En un shell de ADB, puedes emitir comandos con la herramienta administrador de actividades (am) para realizar varias acciones del sistema, como iniciar una actividad, forzar o detener un proceso, transmitir una intent y modificar las propiedades de la pantalla del dispositivo, entre otras. En un shell, la sintaxis es la siguiente:

am command

También puedes emitir un comando del administrador de actividades directamente desde ADB sin ingresar a un shell remoto. Por ejemplo:

adb shell am start -a android.intent.action.VIEW

Tabla 2: Comandos del administrador de actividades disponibles.

Comando Descripción
start [options] intent Inicia una Activity especificada por una intent.

Consulta Especificación para argumentos de intents.

Las opciones son las siguientes:

  • -D: habilita la depuración.
  • -W: establece una espera hasta que se complete el inicio.
  • --start-profiler file: inicia el generador de perfiles y envía resultandos a file.
  • -P file: similar a --start-profiler, pero la generación de perfiles se detiene cuando la app está inactiva.
  • -R count: repite el inicio de la actividad count veces. Antes de cada repetición, se finalizará la actividad principal.
  • -S: fuerza la detención de la app de destino antes de iniciar la actividad.
  • --opengl-trace: habilita el rastreo de funciones OpenGL.
  • --user user_id | current: especifica el usuario que deberá ejecutarse; si no se especifica, se ejecutará como el usuario actual.
startservice [options] intent inicia el Service especificado por intent.

Consulta Especificación para argumentos de intents.

Las opciones son las siguientes:

  • --user user_id | current: especifica el usuario que deberá ejecutarse; si no se especifica, se ejecutará como el usuario actual.
force-stop package Fuerza la detención de todo lo que esté asociado con package (el nombre de paquete de la app).
kill [options] package Elimina todos los procesos asociados con package (el nombre de paquete de la app). Este comando solo elimina los procesos que es seguro eliminar y que no afectarán la experiencia del usuario.

Las opciones son las siguientes:

  • --user user_id | all | current: Especifica el usuario cuyos procesos se eliminarán; si no se especifica, se seleccionarán todos los usuarios.
kill-all Elimina todos los procesos que se ejecutan en segundo plano.
broadcast [options] intent Emite una intent de transmisión.

Consulta Especificación para argumentos de intents.

Las opciones son las siguientes:

  • [--user user_id | all | current]: Especifica a qué usuario se enviará; si no se especifica, se envía a todos los usuarios.
instrument [options] component Comienza a controlar con una instancia Instrumentation. Generalmente, el component de destino tiene la forma test_package/runner_class.

Las opciones son las siguientes:

  • -r: Imprime resultados sin procesar (de lo contrario, decodifica report_key_streamresult). Se usa con [-e perf true] para generar resultados sin procesar para las mediciones de rendimiento.
  • -e name value: Consulta el argumento name para value. Para los ejecutores de pruebas, una forma común es -e testrunner_flag value[,value...].
  • -p file: Escribe datos de generación de perfiles en file.
  • -w: Espera a que la instrumentación finalice antes de regresar. Obligatorio para los ejecutores de pruebas.
  • --no-window-animation: Desactiva las animaciones de ventanas durante la ejecución.
  • --user user_id | current: Especifica en qué instrumentación de usuario se debe ejecutar; si no se especifica, se seleccionará el usuario actual.
profile start process file Inicia el generador de perfiles en process, escribe los resultados en file.
profile stop process Detiene el generador de perfiles en process.
dumpheap [options] process file Vuelca el montón de process, escribe en file.

Las opciones son las siguientes:

  • --user [user_id|current]: Cuando se proporciona un nombre de proceso, se debe especificar el usuario del proceso que se volcará; si no se especifica, se usará el usuario actual.
  • -n: Vuelca el montón nativo en lugar del montón administrado.
set-debug-app [options] package Configura el package de la aplicación en depuración.

Las opciones son las siguientes:

  • -w: Espera al depurador cuando se inicia la aplicación.
  • --persistent: Guarda este valor.
clear-debug-app Borra el conjunto anterior del paquete para depurar con set-debug-app.
monitor [options] Comienza a controlar la presencia de bloqueos o ANR.

Las opciones son las siguientes:

  • --gdb: Inicia gdbserv en el puerto en el puerto especificado en el bloqueo/ANR.
screen-compat {on|off} package Controla el modo de compatibilidad de pantalla de package.
display-size [reset|widthxheight] Anula el tamaño de la pantalla del emulador/dispositivo. Este comando es útil para probar tu app en diferentes tamaños de pantalla imitando la resolución de una pantalla pequeña en un dispositivo con pantalla grande, y viceversa.

Ejemplo:
am display-size 1280x800

display-density dpi Anula la densidad de la pantalla del emulador/dispositivo. Este comando es útil para probar tu app en diferentes densidades de pantalla en un entorno de pantalla de alta densidad usando una pantalla de baja densidad, y viceversa.

Ejemplo:
am display-density 480

to-uri intent Imprime la especificación de la intent en cuestión como un URI.

Consulta Especificación para argumentos de intents.

to-intent-uri intent Imprime la especificación de intent determinada como intent: URI.

Consulta Especificación para argumentos de intents.

Llamar al administrador de paquetes (pm)

En un shell de ADB, puedes emitir comandos con la herramienta administrador de paquetes (pm) para realizar acciones y consultas en paquetes de aplicaciones instalados en el dispositivo. En un shell, la sintaxis es la siguiente:

pm command

También puedes emitir un comando del administrador de paquetes directamente desde ADB sin ingresar a un shell remoto. Por ejemplo:

adb shell pm uninstall com.example.MyApp

Tabla 3. Comandos del administrador de paquetes disponibles.

Comando Descripción
list packages [options] filter Imprime todos los paquetes u, opcionalmente, solo aquellos cuyos nombre de paquete contengan el texto en filter.

Opciones:

  • -f: Consulta su archivo asociado.
  • -d: Filtra para mostrar únicamente los paquetes inhabilitados.
  • -e: Filtra para mostrar únicamente los paquetes habilitados.
  • -s: Filtra para mostrar únicamente los paquetes del sistema.
  • -3: Filtra para mostrar únicamente los paquetes de terceros.
  • -i: Consulta los paquetes en el instalador.
  • -u: Incluye también paquetes desinstalados.
  • --user user_id: El espacio de consulta del usuario.
list permission-groups Imprime todos los grupos de permisos conocidos.
list permissions [options] group Imprime todos los permisos conocidos, y opcionalmente solo aquellos en group.

Opciones:

  • -g: Organiza por grupo.
  • -f: Imprime toda la información.
  • -s: Resumen breve.
  • -d: Solo indica permisos peligrosos.
  • -u: Solo indica los permisos que verán los usuarios.
list instrumentation [options] Indica todos los paquetes de prueba.

Opciones:

  • -f: Indica el archivo APK para el paquete de prueba.
  • target_package: Indica los paquetes de prueba para esta app únicamente.
list features Imprime todas las funciones del sistema.
list libraries Imprime todas las bibliotecas admitidas por el dispositivo actual.
list users Imprime todos los usuarios del sistema.
path package Imprime la ruta de acceso al APK de un package determinado.
install [options] path Instala un paquete (especificado por path) en el sistema.

Opciones:

  • -l: Instala el paquete con bloqueo de reenvío.
  • -r: Reinstala una app existente y conserva sus datos.
  • -t: Permite la instalación de APK de prueba.
  • -i installer_package_name: Especifica el nombre de paquete del instalador.
  • -s: Instala el paquete en el almacenamiento masivo compartido (como una tarjeta sd).
  • -f: Instala el paquete en la memoria interna del sistema.
  • -d: Permite pasar a una versión anterior del código de versión.
  • -g: Otorga todos los permisos que se indican en el manifiesto de la app.
uninstall [options] package Quita un paquete del sistema.

Opciones:

  • -k: Mantiene los directorios de datos y caché después de la eliminación del paquete.
clear package Elimina todos los datos asociados con un paquete.
enable package_or_component Habilita un paquete o componente determinado (escrito como “paquete/clase”).
disable package_or_component Inhabilita un paquete o componente determinado (escrito como “paquete/clase”).
disable-user [options] package_or_component

Opciones:

  • --user user_id: El usuario a inhabilitar.
grant package_name permission Otorga un permiso a una app. En dispositivos con Android 6.0 (nivel de API 23) y versiones posteriores, puede ser cualquier permiso declarado en el manifiesto de la app. En dispositivos con Android 5.1 (nivel de API 22) y versiones anteriores, debe ser un permiso opcional definido por la app.
revoke package_name permission Revoca un permiso de una app. En dispositivos con Android 6.0 (nivel de API 23) y versiones posteriores, puede ser cualquier permiso declarado en el manifiesto de la app. En dispositivos con Android 5.1 (nivel de API 22) y versiones anteriores, debe ser un permiso opcional definido por la app.
set-install-location location Cambia la ubicación de instalación predeterminada. Valores de ubicación:
  • 0: Auto: permite que el sistema decida la mejor ubicación.
  • 1: Interno: instala en una ubicación de almacenamiento interna del dispositivo.
  • 2: Externo: instala en un medio externo.

Nota: Esto es solo para depurar; usarlo puede provocar que las aplicaciones fallen y otros comportamientos no deseados.

get-install-location Muestra la ubicación de instalación actual. Valores de retorno:
  • 0 [auto]: permite que el sistema decida la mejor ubicación.
  • 1 [internal]: instala en una ubicación de almacenamiento interna del dispositivo.
  • 2 [external]: instala en un medio externo.
set-permission-enforced permission [true|false] Especifica si se debe aplicar el permiso otorgado.
trim-caches desired_free_space Recorta los archivos de caché para adaptarlos a un espacio libre determinado.
create-user user_name Crea un usuario nuevo con el user_name proporcionado e imprime el identificador de usuario nuevo para el usuario.
remove-user user_id Quita el usuario con un user_id determinado y elimina todos los datos asociados con ese usuario.
get-max-users Imprime la cantidad máxima de usuarios que admite el dispositivo.

Realizar una captura de pantalla

El comando screencap es una utilidad del shell para realizar una captura de pantalla de la pantalla de un dispositivo. En un shell, la sintaxis es la siguiente:

screencap filename

Para usar el screencap desde la línea de comandos, escribe lo siguiente:

$ adb shell screencap /sdcard/screen.png

Aquí te mostramos un ejemplo de una sesión de captura de pantalla, usando el shell de ADB para realizar la captura de pantalla y el comando pull para descargar el archivo desde el dispositivo:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

Grabar un video

El comando screenrecord es una utilidad del shell que permite grabar la pantalla de dispositivos con Android 4.4 (nivel de API 19) y versiones posteriores. La utilidad graba la actividad en pantalla en un archivo MPEG-4.

Nota: No se graba audio con el archivo de video.

Un programador puede usar este archivo para crear videos promocionales o de capacitación. En un shell, la sintaxis es la siguiente:

screenrecord [options] filename

Para usar el screenrecord desde la línea de comandos, escribe lo siguiente:

$ adb shell screenrecord /sdcard/demo.mp4

Detiene la grabación de la pantalla presionando Control + C; de lo contrario, la grabación se detiene automáticamente a los tres minutos o cuando se alcance el tiempo límite establecido por --time-limit.

Para comenzar a grabar la pantalla de tu dispositivo, ejecuta el comando screenrecord para grabar video. Luego, ejecuta el comando pull para descargar el video del dispositivo en una computadora host. Aquí te mostramos un ejemplo de una sesión de grabación:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

La utilidad screenrecord puede grabar en cualquier resolución admitida y tasa de bits que solicites, mientras conserva la relación de aspecto de la pantalla del dispositivo. De forma predeterminada, la utilidad graba en la resolución y la orientación nativas de la pantalla, con un tiempo de grabación máximo de tres minutos.

Hay algunas limitaciones conocidas de la utilidad screenrecord que debes conocer al momento de usarla.

Tabla 4. Opciones de screenrecord

Opciones Descripción
--help Muestra la sintaxis y las opciones del comando.
--size widthxheight Establece el tamaño del video: 1280x720. El valor predeterminado es la resolución nativa de la pantalla del dispositivo (si se admite); si no se admite, es 1280 x 720. Para obtener mejores resultados, usa un tamaño admitido por el codificador de código de video avanzado (AVC) de tu dispositivo.
--bit-rate rate Fija la tasa de bits de video para el video en megabits por segundo. El valor predeterminado es 4 Mbps. Puedes aumentar la tasa de bits para mejorar la calidad del video, pero si lo haces los archivos de video serán más grandes. En el siguiente ejemplo, se fija la tasa de bits de grabación en 6 Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time Fija el tiempo de grabación máximo en segundos. El valor máximo predeterminado es 180 (3 minutos).
--rotate Rota el video resultante 90 grados. Esta función es experimental.
--verbose Muestra información de registro en la pantalla de la línea de comandos. Si no configuras esta opción, la utilidad no muestra información mientras se ejecuta.

Leer perfiles de ART para apps

A partir de Android 7.0 (nivel de API 24) y del tiempo de ejecución de Android (ART), recopila perfiles de ejecución para las apps instaladas, que se usan para optimizar el rendimiento de la app. Te recomendamos examinar los perfiles recopilados para comprender los métodos que se ejecutan con frecuencia y las clases que se usan durante el inicio de una app.

Para producir un texto a partir de información del perfil, usa el siguiente comando:

$ adb shell cmd package dump-profiles package

Para recuperar el archivo creado, usa:

$ adb pull /data/misc/profman/package.txt

Otros comandos del shell

Para obtener una lista de los programas del shell disponibles, usa el siguiente comando:

adb shell ls /system/bin

Hay ayuda disponible para la mayoría de los comandos.

En la tabla 5 se mencionan algunos de los comandos del shell de ADB más comunes.

Tabla 5: Algunos de los demás comandos del shell de ADB.

Comando del shell Descripción Comentarios
dumpsys Vuelca datos del sistema en la pantalla. La herramienta Dalvik Debug Monitor Server (DDMS) ofrece un entorno de depuración integrado que puede resultarte fácil de usar.
dumpstate Vuelca el estado en un archivo.
logcat [option]... [filter-spec]... Habilita el registro del sistema y de apps, e imprime los resultados en la pantalla.
dmesg Imprime los mensajes de depuración del kernel en la pantalla.
start Inicia (reinicia) una instancia del emulador o dispositivo.  
stop Detiene la ejecución de una instancia del emulador o dispositivo.  
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)