Anda di halaman 1dari 18

https://developer.android.com/studio/command-line/adb.

html

Android Debug Bridge

En este documento:
1. Cómo funciona ADB
2. Habilitar la depuración de ADB en tu dispositivo
3. Conectarse a un dispositivo a través de Wi-Fi
4. Realizar consultas de dispositivos
5. Enviar comandos a un dispositivo específico
6. Instalar una app
7. Configurar la redirección de puertos
8. Copiar archivos a un dispositivo o desde este
9. Detener el servidor de ADB
10.Referencia de comandos de ADB
11.Emitir comandos del shell
1. Llamar al administrador de actividades (am)
2. Llamar al administrador de paquetes (pm)
3. Realizar una captura de pantalla
4. Grabar un video
5. Leer perfiles de ART para apps
6. Otros comandos del shell
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:
• Un cliente, que envía comandos. El cliente se ejecuta en tu máquina de desarrollo. Puedes
invocar un cliente desde un terminal de línea de comandos emitiendo un comando de ADB.
• Un daemon, que ejecuta comandos en un dispositivo. El daemon se ejecuta como un
proceso en segundo plano en cada instancia del emulador o dispositivo.
• Un servidor, que administra la comunicación entre el cliente y el daemon. El servidor se
ejecuta como un proceso en segundo plano en tu máquina de desarrollo.
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:


• Número de serie: una string creada por ADB para identificar de forma exclusiva una
instancia del emulador o dispositivo por su número de puerto en la consola. El formato del
número de serie es type-console-port. Aquí te mostramos un ejemplo de número de
serie: emulator-5554
• Estado: el estado de la conexión de la instancia puede ser uno de los siguientes:
• offline: la instancia no está conectada a ADB o no responde.
• device: la instancia ahora está conectada al servidor de ADB. Ten en cuenta que
este estado no implica que el sistema Android se haya iniciado y esté funcionando, ya
que la instancia se conecta a ADB mientras el sistema aún se inicia. No obstante,
después del inicio, este es el estado operativo normal de una instancia de emulador o
dispositivo.
• no device: no hay un emulador o dispositivo conectado.

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 -d Dirige un comando de Muestra un error si hay más de un
de destino ADB al único dispositivo dispositivo USB conectado.
USB conectado.
Dirige un comando de
-e ADB a la única instancia Muestra un error si hay más de una insta
del emulador que esté en del emulador en ejecución.
ejecución.
Dirige un comando de
ADB a una instancia
específica del emulador o
Consulta Cómo dirigir comandos a una
-s serial_number dispositivo, a la que se
instancia específica del emulador o
hace referencia por su
dispositivo.
número de serie asignado
por ADB (como
“emulator-5556”).
Imprime una lista de todas
Para obtener más información, mira
devices las instancias del
Consulta de instancias del emulador o
emulador o dispositivo
dispositivo.
conectado.
General Imprime una lista de los
help comandos de ADB  
admitidos.
version Imprime el número de
 
versión de ADB.
logcat [option] Imprime datos del registro
[filter-specs]  
en la pantalla.
Imprime datos de
dumpsys, dumpstate
bugreport  
y logcat en la pantalla
para el informe de errores.
Depuración
Puedes usar la especificación de redirecc
Imprime una lista de los de puertos forward jdwp:pid para
jdwp procesos JDWP establecer una conexión con un proceso
disponibles en un JDWP específico. Por ejemplo:
dispositivo determinado. adb forward tcp:8000 jdwp:47
jdb -attach localhost:8000
Datos Inserta una aplicación de
Android (especificada
install path_to_apk como ruta de acceso
 
completa a un archivo
APK) en un emulador o
dispositivo.
Copia un archivo
especificado de una
pull remote local 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.
Las especificaciones de puerto pueden us
los siguientes esquemas:
Envía conexiones de
socket desde un puerto • tcp:port_number
local especificado a un • local:unix_domain_socke
forward local remote puerto remoto
_name
especificado en la
• dev:character_device_na
instancia del emulador o
e
dispositivo.
• jdwp:pid

Es preferible ejecutar PPP


en lugar de USB.

• tty: tty para la


Puertos y transmisión de
redes PPP. Por ejemplo:
dev:/dev/oma
p_csmi_ttyl.
• [parm]... :
cero o más
ppp tty [parm]... 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 Imprime la string del


secuencias get-serialno número de serie de la
de instancia de ADB. Para obtener más información, mira
comandos Consulta de instancias del emulador o
Imprime el estado en dispositivo.
get-state ADB de una instancia del
emulador o dispositivo.
wait-for-device Bloquea la ejecución Puedes anexar este comando a otros
hasta que el dispositivo comandos de ADB, en cuyo caso ADB
esté en línea; es decir, esperará hasta que se conecte la instancia
hasta que el estado de la del emulador o dispositivo antes de emiti
instancia sea device. 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 inicia
todo el sistema. Por ese motivo, no debes
anexarlo a otros comandos que requieran
inicio de todo el sistema. A modo de
ejemplo, install requiere el
administrador de paquetes de Android, q
está disponible solo después de que el
sistema se haya iniciado por completo. U
comando como

adb wait-for-device install app.a

emitirá el comando install no bien la


instancia del emulador o el dispositivo se
conecte al servidor de ADB, pero antes d
que el sistema Android se inicie por
completo, por lo que produciría un error.
Verifica si está en
start-server ejecución el proceso del
 
servidor de ADB. Si esto
Servidor no sucede, lo inicia.
kill-server Finaliza el proceso del
 
servidor de ADB.
Inicia un shell remoto en
shell la instancia de destino en
el emulador o dispositivo.
Emite un comando del Para obtener más información, consulta
Shell
shell en la instancia de Emitir comandos del shell.
shell shell_command 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
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.
start [options]
intent • -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.

inicia el Service especificado por intent.

Consulta Especificación para argumentos de intents.

startservice Las opciones son las siguientes:


[options] intent
• --user user_id | current: especifica el usuario que
deberá ejecutarse; si no se especifica, se ejecutará como el
usuario actual.

Fuerza la detención de todo lo que esté asociado con package (el


force-stop package
nombre de paquete de la app).
kill [options] Elimina todos los procesos asociados con package (el nombre de
package 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.


Emite una intent de transmisión.

Consulta Especificación para argumentos de intents.

broadcast Las opciones son las siguientes:


[options] intent
• [--user user_id | all | current]: Especifica a
qué usuario se enviará; si no se especifica, se envía a todos los
usuarios.

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.
instrument
• -e name value: Consulta el argumento name para value.
[options]
component 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 Inicia el generador de perfiles en process, escribe los resultados en


process file file.
profile stop
Detiene el generador de perfiles en process.
process
dumpheap [options] Vuelca el montón de process, escribe en file.
process 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.

Configura el package de la aplicación en depuración.

Las opciones son las siguientes:


set-debug-app
[options] package
• -w: Espera al depurador cuando se inicia la aplicación.
• --persistent: Guarda este valor.

Borra el conjunto anterior del paquete para depurar con set-debug-


clear-debug-app
app.
Comienza a controlar la presencia de bloqueos o ANR.

Las opciones son las siguientes:


monitor [options]
• --gdb: Inicia gdbserv en el puerto en el puerto especificado
en el bloqueo/ANR.

screen-compat {on|
Controla el modo de compatibilidad de pantalla de package.
off} package
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
display-size
grande, y viceversa.
[reset|
widthxheight]
Ejemplo:
am display-size 1280x800

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
display-density de baja densidad, y viceversa.
dpi
Ejemplo:
am display-density 480

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


to-uri intent
Consulta Especificación para argumentos de intents.

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


to-intent-uri
intent Consulta Especificación para argumentos de intents.
▸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
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.
list packages [options] • -e: Filtra para mostrar únicamente los paquetes
filter 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.


Imprime todos los permisos conocidos, y opcionalmente
solo aquellos en group.

Opciones:

list permissions [options] • -g: Organiza por grupo.


group • -f: Imprime toda la información.
• -s: Resumen breve.
• -d: Solo indica permisos peligrosos.
• -u: Solo indica los permisos que verán los
usuarios.
Indica todos los paquetes de prueba.

Opciones:
list instrumentation
• -f: Indica el archivo APK para el paquete de
[options]
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.
Imprime la ruta de acceso al APK de un package
path package
determinado.
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
install [options] path 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.

Quita un paquete del sistema.

Opciones:
uninstall [options]
package
• -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 Habilita un paquete o componente determinado (escrito
package_or_component como “paquete/clase”).
disable Inhabilita un paquete o componente determinado (escrito
package_or_component como “paquete/clase”).
disable-user [options] Opciones:
package_or_component
• --user user_id: El usuario a inhabilitar.

Otorga un permiso a una app. En dispositivos con Android


6.0 (nivel de API 23) y versiones posteriores, puede ser
grant package_name cualquier permiso declarado en el manifiesto de la app. En
permission dispositivos con Android 5.1 (nivel de API 22) y versiones
anteriores, debe ser un permiso opcional definido por la
app.
Revoca un permiso de una app. En dispositivos con
Android 6.0 (nivel de API 23) y versiones posteriores,
revoke package_name puede ser cualquier permiso declarado en el manifiesto de
permission la app. En dispositivos con Android 5.1 (nivel de API 22)
y versiones anteriores, debe ser un permiso opcional
definido por la app.
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
set-install-location
location 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.

Muestra la ubicación de instalación actual. Valores de


retorno:

• 0 [auto]: permite que el sistema decida la mejor


get-install-location 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 Recorta los archivos de caché para adaptarlos a un espacio
desired_free_space libre determinado.
Crea un usuario nuevo con el user_name proporcionado
create-user user_name e imprime el identificador de usuario nuevo para el
usuario.
Quita el usuario con un user_id determinado y elimina
remove-user user_id
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.
• Es posible que algunos dispositivos no puedan grabar en su resolución de pantalla nativa. Si
tienes problemas con la grabación de la pantalla, intenta usar una resolución de pantalla más
baja.
• No se admite la rotación de la pantalla durante la grabación. Si la pantalla gira durante la
grabación, parte de la pantalla aparecerá cortada en el video.
Tabla 4. Opciones de screenrecord

Opciones Descripción
--help Muestra la sintaxis y las opciones del comando.
Establece el tamaño del video: 1280x720. El valor predeterminado es la
--size resolución nativa de la pantalla del dispositivo (si se admite); si no se admite,
widthxheight 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.
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
--bit-rate calidad del video, pero si lo haces los archivos de video serán más grandes. En
rate el siguiente ejemplo, se fija la tasa de bits de grabación en 6 Mbps:

screenrecord --bit-rate 6000000 /sdcard/demo.mp4

--time-limit Fija el tiempo de grabación máximo en segundos. El valor máximo


time 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


Vuelca datos del
dumpsys sistema en la
pantalla.
dumpstate Vuelca el estado
en un archivo.
La herramienta Dalvik
Habilita el registro Debug Monitor Server
del sistema y de (DDMS) ofrece un
logcat [option]... [filter-spec]... apps, e imprime
entorno de depuración
los resultados en la integrado que puede
pantalla. resultarte fácil de usar.
Imprime los
mensajes de
dmesg depuración del
kernel en la
pantalla.
Inicia (reinicia)
start una instancia del
 
emulador o
dispositivo.
Detiene la
ejecución de una
stop instancia del  
emulador o
dispositivo.