0% encontró este documento útil (0 votos)
17 vistas43 páginas

Uso de ADB en Android Studio

Android Debug Bridge (adb) es una herramienta de línea de comandos que permite la comunicación con dispositivos Android para realizar acciones como la instalación y depuración de aplicaciones. Incluye un cliente, un daemon y un servidor que gestionan la comunicación entre ellos y los dispositivos. Además, adb permite la depuración tanto por USB como de forma inalámbrica, facilitando la conexión y el control de dispositivos desde una estación de trabajo.

Cargado por

franc
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas43 páginas

Uso de ADB en Android Studio

Android Debug Bridge (adb) es una herramienta de línea de comandos que permite la comunicación con dispositivos Android para realizar acciones como la instalación y depuración de aplicaciones. Incluye un cliente, un daemon y un servidor que gestionan la comunicación entre ellos y los dispositivos. Además, adb permite la depuración tanto por USB como de forma inalámbrica, facilitando la conexión y el control de dispositivos desde una estación de trabajo.

Cargado por

franc
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Se usó la API de Cloud Translation


(//[Link]/translate/?hl=es-419) para traducir esta Switch to English
página.

Android Debug Bridge (adb)


Android Debug Bridge ( adb ) es una herramienta de línea de comandos versátil que te permite
comunicarte con un dispositivo. El comando adb facilita una variedad de acciones en
dispositivos, como instalar y depurar apps. adb proporciona acceso a un shell Unix que puedes
usar para ejecutar una variedad de comandos en un dispositivo. 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 adb .

Un daemon (adbd), que ejecuta comandos en un dispositivo. El daemon se ejecuta


como un proceso en segundo plano en cada dispositivo.

Un servidor, que administra la comunicación entre el cliente y el daemon. El servidor se


ejecuta en tu máquina de desarrollo como un proceso en segundo plano.

adb se incluye en el paquete de herramientas de la plataforma del SDK de Android. Descarga


este paquete con SDK Manager
([Link] que lo instala en
android_sdk/platform-tools/ . Si quieres el paquete independiente de herramientas de la
plataforma del SDK de Android, descárgalo aquí
([Link]

Para obtener información sobre cómo conectar un dispositivo para usar por medio de adb y
cómo usar el asistente de conexión con el objetivo de solucionar problemas comunes, consulta
Cómo ejecutar apps en un dispositivo de hardware
([Link]

Cómo funciona adb


Cuando inicias un cliente de 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,

[Link] 1/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

este se vincula al puerto TCP 5037 local y escucha los comandos enviados desde los clientes
de adb .

Nota: Todos los clientes de adb usan el puerto 5037 para comunicarse con el servidor de adb.

Luego, el servidor establece conexiones con todos los dispositivos en ejecución. Localiza los
emuladores escaneando puertos con números impares en el rango de 5555 a 5585, que es el
que usan los primeros 16 emuladores. Cuando el servidor encuentra un daemon de adb (adbd),
establece una conexión con ese puerto.

Cada emulador usa 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 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, el emulador conectado a adb en el puerto 5555 es el mismo que el


emulador cuya consola escucha en el puerto 5554.

Una vez que el servidor establece conexiones con todos los dispositivos, puedes usar
comandos de adb para acceder a esos dispositivos. Dado que el servidor administra las
conexiones con los dispositivos y maneja comandos de diferentes clientes de adb , puedes
controlar cualquier dispositivo desde cualquier cliente o desde una secuencia de comandos.

Cómo habilitar la depuración de adb en tu dispositivo


A fin de usar adb con un dispositivo conectado a través de USB, debes habilitar Depuración
por USB en la configuración del sistema del dispositivo, que se encuentra en Opciones para
desarrolladores. En Android 4.2 (nivel de API 17) y versiones posteriores, la pantalla Opciones
para desarrolladores está oculta de forma predeterminada. Para que sea visible, habilita las
Opciones para desarrolladores.
([Link]

Ahora puedes conectar tu dispositivo con USB. Para ello, ejecuta adb devices desde el
directorio android_sdk/platform-tools/ . Si está conectado, verás que el nombre del
dispositivo se enumera como "device" (dispositivo).

[Link] 2/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Nota: Cuando conectas un dispositivo con Android 4.2.2 (nivel de API 17) 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 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 Cómo ejecutar apps en un dispositivo de hardware
([Link]

Cómo conectarse a un dispositivo a través de Wi-Fi

Nota: Las siguientes instrucciones no se aplican a los dispositivos para Wear que ejecutan Android 11 (nivel
de API 30). Si quieres obtener más información, consulta la guía en la que se indica la depuración de una
app para Wear OS
([Link]

Android 11 (nivel de API 30) y las versiones posteriores admiten la implementación y la


depuración de tu app de forma inalámbrica desde tu estación de trabajo con Android Debug
Bridge (adb). Por ejemplo, puedes implementar tu app depurable en varios dispositivos
remotos sin necesidad de conectar físicamente tu dispositivo por USB. Esto elimina la
necesidad de resolver problemas comunes de conexión USB, como la instalación de
controladores.

Antes de comenzar a usar la depuración inalámbrica, haz lo siguiente:

Asegúrate de que tu estación de trabajo y dispositivo estén conectados a la misma red


inalámbrica.

Asegúrate de que tu dispositivo ejecute Android 11 (nivel de API 30) o una versión
posterior si es un teléfono, o bien Android 13 (nivel de API 33) o una versión posterior si es
una TV o un Wear OS. Para obtener más información, lee Cómo consultar y actualizar tu
versión de Android ([Link]

Si usas el IDE, asegúrate de tener instalada la versión más reciente de Android Studio.
Puedes descargarla aquí ([Link]

En tu estación de trabajo, actualiza a la versión más reciente de las Herramientas de la


plataforma del SDK ([Link]

[Link] 3/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Para usar la depuración inalámbrica, debes sincronizar tu dispositivo con tu estación de


trabajo mediante un código QR o un código de vinculación. Ambos elementos deben estar
conectados a la misma red inalámbrica. Para conectarte a tu dispositivo, sigue estos pasos:

1. Habilita Opciones para desarrolladores


([Link] en tu dispositivo.

2. Abre Android Studio y selecciona Pair Devices Using Wi-Fi en el menú desplegable de
configuraciones de ejecución.

Figura 1: Menú de configuraciones de ejecución

Aparecerá la ventana Pair devices over Wi-Fi, como se muestra en la figura 2.

[Link] 4/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Figura 2: Ventana emergente para vincular dispositivos mediante código QR o código de


vinculación

3. En tu dispositivo, presiona Depuración inalámbrica y vincúlalo:

[Link] 5/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Figura 3: Captura de pantalla del parámetro de configuración Depuración inalámbrica


en un teléfono Google Pixel

a. Para vincular tu dispositivo con un código QR, selecciona Pair device with QR
code y escanea el que muestre la ventana emergente Pair devices over Wi-Fi que
aparece en la figura 2.

b. Para vincular tu dispositivo con un código de vinculación, selecciona Pair device


with pairing code de la ventana emergente Pair devices over Wi-Fi. En el
dispositivo, selecciona Pair using pairing code y toma nota del código de seis
dígitos que aparece. Una vez que el dispositivo aparezca en la ventana Pair
devices over Wi-Fi, puedes seleccionar Pair y, luego, ingresar el código de seis
dígitos que se muestra en el dispositivo.

[Link] 6/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Figura 4: Ejemplo de entrada de código de seis dígitos

4. Una vez que tu dispositivo esté sincronizado, podrás intentar implementar tu app en él.

Para vincular un dispositivo diferente u olvidar el dispositivo actual de la estación de


trabajo, navega a Depuración inalámbrica en tu dispositivo. Presiona el nombre de tu
estación de trabajo en Dispositivos vinculados y selecciona Olvidar.

5. Si quieres activar y desactivar rápidamente la depuración inalámbrica, usa los azulejos de


configuración rápida para desarrolladores
([Link] de la Depuración
inalámbrica, que se encuentra en Opciones para desarrolladores > Azulejos de
configuración rápida para desarrolladores.

[Link] 7/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Figura 5: La opción Azulejos de configuración rápida para desarrolladores te permite


activar y desactivar la depuración inalámbrica con rapidez.

Conexión Wi-Fi con la línea de comandos


Como alternativa, para conectarte a tu dispositivo mediante la línea de comandos sin Android
Studio, sigue estos pasos:

1. Habilita las opciones para desarrolladores en tu dispositivo, como se describió


anteriormente.

2. Habilita la depuración inalámbrica en el dispositivo, como se describió anteriormente.

3. En tu estación de trabajo, abre una ventana de terminal y navega hasta


android_sdk/platform-tools .

[Link] 8/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

4. Busca tu dirección IP, número de puerto y código de vinculación seleccionando Vincular


dispositivo con código de sincronización. Toma nota de la dirección IP, el número de
puerto y el código de vinculación que se muestran en el dispositivo.

5. Ejecuta adb pair ipaddr:port en la terminal de tu estación de trabajo. Usa la dirección


IP y el número de puerto que se mencionan arriba.

6. Cuando se te solicite, ingresa el código de vinculación, como se muestra a continuación.

Figura 6: Debería aparecer un mensaje que indique que se vinculó correctamente tu


dispositivo.

Cómo resolver problemas de conexión inalámbrica


Si tienes problemas para conectarte al dispositivo de forma inalámbrica, puedes probar los
siguientes pasos para solucionarlos.

Cómo comprobar si la estación de trabajo y el dispositivo cumplen con los


requisitos previos
Verifica que la estación de trabajo y el dispositivo cumplan con los requisitos previos que se
mencionan al comienzo de esta sección (#connect-to-a-device-over-wi-fi-android-11+).

Cómo comprobar otros problemas conocidos


En la siguiente lista, se enumeran los problemas conocidos actuales con la depuración
inalámbrica (con adb o Android Studio) y cómo solucionarlos:

El Wi-Fi no se conecta: Es posible que las redes Wi-Fi seguras, como las corporativas,
bloqueen conexiones p2p y no te permitan conectarte mediante Wi-Fi. Intenta conectarte
con un cable o otra red Wi-Fi (que no sea corporativa). La conexión inalámbrica con adb
connect ip:port mediante tcp/ip (después de una conexión USB inicial) es otra opción,
en caso de que lo sea.

A veces, la conexión de adb mediante Wi-Fi se desactiva automáticamente: Esto


puede ocurrir si el dispositivo cambia de red Wi-Fi o se desconecta de ella. Para
resolverlo, vuelve a conectarte a la red.

El dispositivo no se conecta después de la vinculación correctamente: adb depende


de mDNS para detectar dispositivos vinculados y conectarse automáticamente a ellos. Si

[Link] 9/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

la configuración de tu red o del dispositivo no admite mDNS o la inhabilitó, debes


conectarte de forma manual al dispositivo mediante adb connect ip:port .

Cómo conectarse de forma inalámbrica con un dispositivo


después de una conexión USB inicial (solo opción disponible
en Android 10 y versiones anteriores)

Nota: Este flujo de trabajo también se aplica a Android 11 (y versiones posteriores). La salvedad es que
también implica una conexión *inicial* mediante USB físico.

Nota: Las siguientes instrucciones no se aplican a los dispositivos para Wear que ejecutan Android 10 (nivel
de API 29) o versiones anteriores. Si quieres obtener más información, consulta la guía en la que se indica la
depuración de una app para Wear OS
([Link]

adb normalmente se comunica con el dispositivo a través de USB, pero también puedes usar
adb con Wi-Fi. Para conectar un dispositivo con Android 10 (nivel de API 29) o versiones
anteriores, sigue estos pasos iniciales a través de USB:

1. Conecta tu dispositivo Android y la computadora host adb a una red Wi-Fi común.

star Nota: Ten en cuenta que no todos los puntos de acceso son adecuados. Es posible que debas usar un
punto de acceso cuyo firewall esté configurado correctamente para admitir adb.

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.

[Link] 10/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

5. Busca la dirección IP del dispositivo Android. Por ejemplo, en un dispositivo Nexus,


puedes encontrar la dirección IP en Configuración > Acerca de la tablet (o Acerca del
dispositivo) > Estado > Dirección IP.

6. Para conectarte al dispositivo, busca su dirección IP:

adb connect device_ip_address:5555

7. Confirma que tu computadora host esté conectada al dispositivo de destino:

$ adb devices
List of devices attached
device_ip_address:5555 device

Tu dispositivo ahora está conectado a adb .

Si se pierde la conexión a tu dispositivo adb , haz lo siguiente:

Asegúrate de que tu host aún esté conectado a la misma red Wi-Fi que el dispositivo
Android.

Vuelve a conectarte ejecutando el paso adb connect nuevamente.

Si eso no funciona, restablece tu host adb :

adb kill-server

Luego vuelve a comenzar desde el principio.

Cómo realizar consultas de dispositivos


Antes de emitir comandos adb , es útil saber qué instancias de dispositivos están conectadas al
servidor adb . Genera una lista de dispositivos asociados usando el comando devices :

adb devices -l

[Link] 11/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

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

Número de serie: adb crea una string para identificar el dispositivo de forma única por
su número de puerto. A continuación, puedes ver un ejemplo de número de serie:
emulator-5554 .

Estado: El estado de conexión del dispositivo puede ser uno de los siguientes:

offline : El dispositivo no está conectado a adb o no responde.

device : El dispositivo está conectado al servidor de adb . Ten en cuenta que este
estado no implica que el sistema Android se haya iniciado y esté funcionando, ya
que el dispositivo se conecta a adb mientras el sistema aún se inicia. Este es el
estado operativo normal de un dispositivo después del inicio.

no device : No hay ningún dispositivo conectado.

Descripción: Si incluyes la opción -l , el comando devices dice qué es el dispositivo.


Esta información es útil cuando tienes que diferenciar los distintos dispositivos
conectados.

En el siguiente ejemplo, se muestra el comando devices y su resultado. Hay tres dispositivos


en ejecución. Las primeras dos líneas de la lista son emuladores y la tercera línea es un
dispositivo de hardware que está asociado a la computadora.

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86
0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo

El emulador no aparece en la lista


El comando adb devices tiene una secuencia de comandos de caso límite que hace que los
emuladores en ejecución no se muestren en el resultado de adb devices , a pesar de que
están visibles en el escritorio. Esto sucede cuando se cumplen todas las condiciones
siguientes:

El servidor de adb no se está ejecutando.

Usas el comando emulator con la opción -port o -ports con un valor de puerto de
número impar entre 5554 y 5584.

[Link] 12/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

El puerto de número impar que elegiste no está ocupado, por lo que la conexión del
puerto se puede realizar en el número de puerto especificado o, si está ocupado, el
emulador cambia a otro puerto que cumple con los requisitos de 2.

Inicias el servidor de adb después de iniciar el emulador.

Una forma de evitar esta situación es dejar que el emulador elija sus propios puertos y ejecutar
no más de 16 emuladores a la vez. Otra forma consiste en iniciar siempre el servidor de adb
antes de usar el comando emulator , como se explica en los siguientes ejemplos.

Ejemplo 1: En la siguiente secuencia de comandos, el comando adb devices inicia el servidor


de adb , pero la lista de dispositivos no aparece.

Detén el servidor de adb y escribe los siguientes comandos en el orden que se muestra. Para
el nombre de AVD, proporciona un nombre de AVD válido del sistema. Para obtener una lista de
nombres de AVD, escribe emulator -list-avds . El comando emulator está en el directorio
android_sdk/tools .

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached


* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Ejemplo 2: En la siguiente secuencia de comandos, adb devices muestra la lista de


dispositivos porque se inició primero el servidor de adb .

Para ver el emulador en el resultado de adb devices , detén el servidor de adb y vuelve a
iniciarlo después de usar el comando emulator y antes de utilizar adb devices , de la
siguiente manera:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached


emulator-5557 device

[Link] 13/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Para obtener más información sobre las opciones de línea de comandos del emulador, consulta
Opciones de inicio de la línea de comandos
([Link]

Cómo enviar comandos a un dispositivo específico


Si se ejecutan varios dispositivos, debes especificar el dispositivo de destino cuando emitas el
comando adb . Para especificar el destino, sigue estos pasos:

1. Usa el comando devices para obtener el número de serie del destino.

2. Una vez que tengas el número de serie, usa la opción -s con los comandos adb para
especificar el número de serie.

a. Si vas a emitir muchos comandos adb , puedes configurar la variable de entorno de


$ANDROID_SERIAL para que incluya el número de serie.

b. Si usas -s y $ANDROID_SERIAL , -s anula $ANDROID_SERIAL .

En el siguiente ejemplo, se obtiene la lista de dispositivos asociados y, luego, se usa el número


de serie de uno de ellos para instalar [Link] en él:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
[Link]:6520 device

# To install on emulator-5555
$ adb -s emulator-5555 install [Link]
# To install on [Link]:6520
$ adb -s [Link]:6520 install [Link]

Nota: Si emites un comando sin especificar un dispositivo de destino cuando hay varios dispositivos
disponibles, adb muestra el error "adb: más de un dispositivo/emulador".

Si tienes varios dispositivos disponibles, pero solo uno es un emulador, usa la opción -e para
enviar comandos al emulador. Si hay varios dispositivos, pero solo un dispositivo de hardware
asociado, usa la opción -d para enviar comandos al dispositivo de hardware.

[Link] 14/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Cómo instalar una app


Puedes usar adb para instalar un APK en un emulador o dispositivo conectado con el comando
install :

adb install path_to_apk

Debes usar la opción -t con el comando install cuando instales un APK de prueba. Para
obtener más información, consulta -t (#-t-option).

Para instalar varios APK, usa install-multiple . Esto es útil si descargas todos los APKs de un
dispositivo específico para tu app desde Play Console y quieres instalarlos en un emulador o
dispositivo físico.

Para descubrir cómo crear un archivo APK que puedas instalar en una instancia del emulador o
dispositivo, consulta Cómo compilar y ejecutar tu app
([Link]

Nota: Si usas Android Studio, no necesitas usar adb directamente para instalar tu app en el emulador o
dispositivo. En cambio, Android Studio se encarga del empaquetado y la instalación de la app.

Cómo configurar la redirección de puertos


Usa el comando forward para configurar la redirección de puertos arbitraria, que reenvía las
solicitudes en un puerto host específico a un puerto diferente en un dispositivo. En el siguiente
ejemplo, se configura la redirección del puerto de host 6100 al puerto de dispositivo 7100:

adb forward tcp:6100 tcp:7100

En el siguiente ejemplo, se configura la redirección del puerto de host 6100 a local:logd:

adb forward tcp:6100 local:logd

[Link] 15/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Esto podría ser útil si intentas identificar lo que se envía a un puerto determinado en el
dispositivo. Todos los datos recibidos se escribirán en el daemon de registro del sistema y se
mostrarán en los registros del dispositivo.

Cómo copiar archivos desde y hacia un dispositivo


Usa los comandos pull y push para copiar archivos desde un dispositivo y hacia este. 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 un dispositivo.

Para copiar un archivo o directorio y sus subdirectorios desde el dispositivo, haz lo siguiente:

adb pull remote local

Para copiar un archivo o directorio y sus subdirectorios al dispositivo, haz lo siguiente:

adb push local remote

Reemplaza local y remote con las rutas al directorio o archivos de destino en la máquina de
desarrollo (local) y en el dispositivo (remoto). Por ejemplo:

adb push [Link] /sdcard/[Link]

Cómo detener el servidor de adb


En algunos casos, es posible que debas finalizar el proceso del servidor adb y, luego,
reiniciarlo para resolver el problema. Por ejemplo, este podría ser el caso 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 adb .

[Link] 16/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Cómo emitir comandos de adb


Ejecuta los comandos adb desde una línea de comandos en tu máquina de desarrollo o desde
una secuencia de comandos con lo 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 adb se envía a ese dispositivo. Si se ejecutan varios emuladores y
se conectan varios dispositivos, debes usar la opción -d , -e o -s para especificar el
dispositivo de destino al que se debe dirigir el comando.

Para consultar la lista detallada de todos los comandos adb compatibles, usa el siguiente
comando:

adb --help

Cómo emitir comandos del shell


Puedes usar el comando shell para emitir comandos de dispositivo mediante adb o para
iniciar un shell interactivo. Para emitir un solo comando, usa el comando shell de la siguiente
manera:

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

Para iniciar un shell interactivo en un dispositivo, usa el comando shell de la siguiente


manera:

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

Para salir de un shell interactivo, presiona Control+D o escribe exit .

[Link] 17/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Android proporciona la mayoría de las herramientas habituales de línea de comandos de Unix.


Para obtener una lista de las herramientas disponibles, usa el siguiente comando:

adb shell ls /system/bin

Hay ayuda disponible para la mayoría de los comandos mediante el argumento --help . toybox
([Link] proporciona muchos de los comandos del shell. La ayuda general que
se puede aplicar a todos los comandos de toybox está disponible mediante toybox --help .

Con la versión 23 de las herramientas de plataforma de Android y versiones posteriores, adb


maneja los argumentos del mismo modo que el comando ssh(1) . Este cambio solucionó
muchos problemas relacionados con la inserción de comandos
([Link] y permite ejecutar de forma segura
comandos que contienen metacaracteres ([Link] del shell,
como adb install Let\'[Link] . Sin embargo, este cambio implica que también cambió la
interpretación de los comandos que contienen metacaracteres del shell.

Por ejemplo, el comando adb shell setprop key 'value' ahora es un error porque las
comillas simples ( ' ) se incluyen en el shell local, y el dispositivo ve adb shell setprop key
value . Para que el comando funcione, usa comillas dos veces: una para el shell local y una
para el shell remoto, como haces con ssh(1) . Por ejemplo, adb shell setprop key 'value'
:

Consulta también la herramienta de línea de comandos Logcat


([Link] que es útil para supervisar el
registro del sistema.

Cómo llamar al administrador de actividades


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 un intent y modificar las propiedades de la pantalla del dispositivo, entre
otras.

En un shell, la sintaxis de am es la siguiente:

am command

[Link] 18/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

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 [Link]

Tabla 1: Comandos disponibles del administrador de actividades

Comando Descripción

start [options] intent Inicia una Activity


([Link]
419)
especificada por intent.

Consulta Especificación para argumentos de intents (#IntentSpec).

Las opciones son las siguientes:

-D: Habilita la depuración.


-W: Espera a que se complete el inicio.
--start-profiler file: Inicia el generador de perfiles y env
resultados a file.

-P file: Es similar a --start-profiler, pero se detiene la


generación de perfiles cuando la app queda 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 actu

startservice [options] intent Inicia el Service


([Link]
419)
especificado por intent.

Consulta Especificación para argumentos de intents (#IntentSpec).

Las opciones son las siguientes:

[Link] 19/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--user user_id | current: Especifica el usuario que se


ejecutará. Si no se especifica, se ejecuta como el usuario actual.

force-stop package Fuerza la detención de todo lo que esté asociado con package.

kill [options] package Cierra todos los procesos asociados con package. Este comando so
cierra los procesos que es seguro cerrar y que no afectarán la
experiencia del usuario.

Las opciones son las siguientes:

--user user_id | all | current: Especifica los procesos


usuario que se deben cerrar. Si no se especifica, cierra los proce
de todos los usuarios.

kill-all Cierra todos los procesos que se ejecutan en segundo plano.

broadcast [options] intent Emite un intent de transmisión.


Consulta Especificación para argumentos de intents (#IntentSpec).

Las opciones son las siguientes:

[--user user_id | all | current]: Especifica a qué usua


se enviará. Si no se especifica, se envía a todos los usuarios.

instrument [options] component Comienza la supervisión con una instancia Instrumentation


([Link]
hl=es-419)
. Por lo general, el objetivo component es el formulario
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] pa
generar resultados sin procesar para las mediciones de rendimie

-e name value: Establece el argumento name en value. Para l


ejecutores de pruebas, una forma común es -e testrunner_f
value[,value...].
-p file: Escribe datos de generación de perfiles en file.
-w: Espera a que la instrumentación finalice antes de regresar. Es
obligatorio para los ejecutores de pruebas.

--no-window-animation: Desactiva las animaciones de venta


durante la ejecución.

[Link] 20/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--user user_id | current: Especifica en qué instrumentaci


de usuario se debe ejecutar. Si no se especifica, se ejecuta en el
usuario actual.

profile start process file Inicia el generador de perfiles en process, escribe los resultados en
file.

profile stop process Detén el generador de perfiles en process.

dumpheap [options] process fileVuelca el montón de process y escribe en file.

Las opciones son las siguientes:

--user [user_id | current]: Cuando proporciones un nom


de proceso, especifica el usuario del proceso que se volcará. Si n
se especifica, se usa el usuario actual.

-n: Vuelca el montón nativo en lugar del montón administrado.

set-debug-app [options] packageConfigura la app package para depurar.

Las opciones son las siguientes:

-w: Espera al depurador cuando se inicia la app.


--persistent: Conserva 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 especificado en la falla/ANR.

screen-compat {on | off} Controla el modo de compatibilidad de pantalla


package ([Link]
hl=es-419)
de package.

display-size [reset | Anula el tamaño de visualización del dispositivo. Este comando es út


widthxheight] 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

[Link] 21/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

display-density dpi Anula la densidad de la pantalla del dispositivo. Este comando es úti
para probar tu app en diferentes densidades de pantalla, ya que imit
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 del intent en cuestión como un URI.


Consulta Especificación para argumentos de intents (#IntentSpec).

to-intent-uri intent Imprime la especificación del intent determinado como un URI


intent:.

Consulta Especificación para argumentos de intents (#IntentSpec).

Especificación para argumentos de intents


Para los comandos del administrador de actividades que tienen un argumento intent , puedes
especificar el intent con las siguientes opciones:

Mostrar todo

-a action

Especifica la acción del intent, como [Link] . Puedes declarar


esto una sola vez.

-d data_uri

Especifica el URI de datos del intent, como content://contacts/people/1 . Puedes


declarar esto una sola vez.

-t mime_type

Especifica el tipo de MIME del intent, como image/png . Puedes declarar esto una sola
vez.

-c category

Especifica una categoría de intent, como [Link].APP_CONTACTS .

-n component

Especifica el nombre del componente con el prefijo del nombre del paquete para crear un
intent explícito, como [Link]/.ExampleActivity .

[Link] 22/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

-f flags

Agrega marcas al intent, siempre que sean compatibles con setFlags()


([Link] .

--esn extra_key

Agrega una clave extra nula. Esta opción no se admite para intents de URI.

-e | --es extra_key extra_string_value

Agrega datos de cadena como un par clave-valor.

--ez extra_key extra_boolean_value

Agrega datos booleanos como un par clave-valor.

--ei extra_key extra_int_value

Agrega datos enteros como un par clave-valor.

--el extra_key extra_long_value

Agrega datos extensos como un par clave-valor.

--ef extra_key extra_float_value

Agrega datos flotantes como un par clave-valor.

--eu extra_key extra_uri_value

Agrega datos de URI como un par clave-valor.

--ecn extra_key extra_component_name_value

Agrega un nombre de componente, que se convierte y se pasa como un objeto


ComponentName
([Link] .

--eia extra_key extra_int_value[,extra_int_value...]

Agrega un array de números enteros.

--ela extra_key extra_long_value[,extra_long_value...]

Agrega una matriz de valores largos.

--efa extra_key extra_float_value[,extra_float_value...]

Agrega una matriz de números de punto flotante.

[Link] 23/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--grant-read-uri-permission

Incluye la marca FLAG_GRANT_READ_URI_PERMISSION


([Link]
419#FLAG_GRANT_READ_URI_PERMISSION)
.

--grant-write-uri-permission

Incluye la marca FLAG_GRANT_WRITE_URI_PERMISSION


([Link]
419#FLAG_GRANT_WRITE_URI_PERMISSION)
.

--debug-log-resolution

Incluye la marca FLAG_DEBUG_LOG_RESOLUTION


([Link]
419#FLAG_DEBUG_LOG_RESOLUTION)
.

--exclude-stopped-packages

Incluye la marca FLAG_EXCLUDE_STOPPED_PACKAGES


([Link]
419#FLAG_EXCLUDE_STOPPED_PACKAGES)
.

--include-stopped-packages

Incluye la marca FLAG_INCLUDE_STOPPED_PACKAGES


([Link]
419#FLAG_INCLUDE_STOPPED_PACKAGES)
.

--activity-brought-to-front

Incluye la marca FLAG_ACTIVITY_BROUGHT_TO_FRONT


([Link]
419#FLAG_ACTIVITY_BROUGHT_TO_FRONT)
.

--activity-clear-top

Incluye la marca FLAG_ACTIVITY_CLEAR_TOP


([Link]
419#FLAG_ACTIVITY_CLEAR_TOP)
.

[Link] 24/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--activity-clear-when-task-reset

Incluye la marca FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET


([Link]
419#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
.

--activity-exclude-from-recents

Incluye la marca FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS


([Link]
419#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
.

--activity-launched-from-history

Incluye la marca FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY


([Link]
419#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)
.

--activity-multiple-task

Incluye la marca FLAG_ACTIVITY_MULTIPLE_TASK


([Link]
419#FLAG_ACTIVITY_MULTIPLE_TASK)
.

--activity-no-animation

Incluye la marca FLAG_ACTIVITY_NO_ANIMATION


([Link]
419#FLAG_ACTIVITY_NO_ANIMATION)
.

--activity-no-history

Incluye la marca FLAG_ACTIVITY_NO_HISTORY


([Link]
419#FLAG_ACTIVITY_NO_HISTORY)
.

--activity-no-user-action

Incluye la marca FLAG_ACTIVITY_NO_USER_ACTION


([Link]
419#FLAG_ACTIVITY_NO_USER_ACTION)
.

[Link] 25/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--activity-previous-is-top

Incluye la marca FLAG_ACTIVITY_PREVIOUS_IS_TOP


([Link]
419#FLAG_ACTIVITY_PREVIOUS_IS_TOP)
.

--activity-reorder-to-front

Incluye la marca FLAG_ACTIVITY_REORDER_TO_FRONT


([Link]
419#FLAG_ACTIVITY_REORDER_TO_FRONT)
.

--activity-reset-task-if-needed

Incluye la marca FLAG_ACTIVITY_RESET_TASK_IF_NEEDED


([Link]
419#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
.

--activity-single-top

Incluye la marca FLAG_ACTIVITY_SINGLE_TOP


([Link]
419#FLAG_ACTIVITY_SINGLE_TOP)
.

--activity-clear-task

Incluye la marca FLAG_ACTIVITY_CLEAR_TASK


([Link]
419#FLAG_ACTIVITY_CLEAR_TASK)
.

--activity-task-on-home

Incluye la marca FLAG_ACTIVITY_TASK_ON_HOME


([Link]
419#FLAG_ACTIVITY_TASK_ON_HOME)
.

--receiver-registered-only

Incluye la marca FLAG_RECEIVER_REGISTERED_ONLY


([Link]
419#FLAG_RECEIVER_REGISTERED_ONLY)
.

[Link] 26/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--receiver-replace-pending

Incluye la marca FLAG_RECEIVER_REPLACE_PENDING


([Link]
419#FLAG_RECEIVER_REPLACE_PENDING)
.

--selector

Requiere el uso de las opciones -d y -t para configurar los datos del intent y el tipo.

URI component package

Puedes especificar directamente un URI, un nombre de paquete y un nombre de


componente cuando no se complete con ninguna de las opciones anteriores. Cuando un
argumento está incompleto, la herramienta deduce que el argumento es un URI si
contiene ":" (dos puntos). Las herramienta deduce que el argumento es un nombre de
componente si contiene una “/” (barra diagonal). De lo contrario, deduce que el
argumento es un nombre de paquete.

Cómo 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 de pm 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 [Link]

Tabla 2: Comandos disponibles del administrador de paquetes

Comando Descripción

[Link] 27/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

list packages [options] filter Imprime todos los paquetes u, opcionalmente, solo
aquellos cuyos nombres de paquete contengan el
texto en filter.

Opciones:

-f: Consulta el 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 paquetes desinstalados.
--user user_id: Es 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 detalla los permisos peligrosos.
-u: Solo indica los permisos que verán los
usuarios.

list instrumentation [options] Indica todos los paquetes de prueba.


Opciones:

-f: Detalla el archivo APK para el paquete de


prueba.

target_package: Detalla paquetes de prueba


solo para esta app.

[Link] 28/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

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:

-r: Reinstala una app existente y conserva sus


datos.

-t: Permite la instalación de APK de prueba.


Gradle genera un APK de prueba cuando solo
ejecutaste o depuraste tu app, o bien usaste el
comando Build > Build APK de Android Studio. Si
se compila el APK con un SDK de versión
preliminar para desarrolladores, debes incluir la
opción -t
([Link]
line/adb?hl=es-419#-t-option)
con el comando install si instalas un APK de
prueba.

-i installer_package_name: Especifica el
nombre de paquete del instalador.

--install-location location: Configura la


ubicación de instalación mediante uno de los
siguientes valores:

0: Usa la ubicación de instalación


predeterminada.

1: Realiza la instalación en el
almacenamiento interno del dispositivo.

2: Realiza la instalación en medios


externos.

-f: Instala el paquete en la memoria interna del


sistema.

-d: Permite pasar a una versión anterior del


código de versión.

[Link] 29/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

-g: Otorga todos los permisos que se indican en


el manifiesto de la app.

--fastdeploy: Actualiza rápidamente un


paquete instalado actualizando solo las partes
del APK que cambiaron.

--incremental: Instala lo suficiente del APK


como para iniciar la app mientras se transmiten
los datos restantes en segundo plano. Para usar
esta función, debes firmar el APK, crear un
archivo Esquema de firma de APK v4
([Link]
line/apksigner?hl=es-419#v4-signing-enabled)
y colocar este archivo en el mismo directorio que
el APK. Esta función solo es compatible con
algunos dispositivos. Esta opción fuerza a adb a
usar la función o falla si no es compatible, con
información detallada sobre por qué falló.
Agrega la opción --wait para esperar a que el
APK esté completamente instalado antes de
otorgar acceso al APK.

--no-incremental evita que adb use esta


función.

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.

--user user_id: Especifica el usuario para el


que se quita el paquete.

--versionCode version_code: Solo se


desinstala si la app tiene el código de versión
especificado.

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_componentOpciones:

[Link] 30/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--user user_id: Es el usuario que se


inhabilitará.

grant package_name permission Otorga permiso a una app. En los dispositivos que
ejecutan Android 6.0 (nivel de API 23) y versiones
posteriores, el permiso 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 Revocar un permiso de una app. En los dispositivos


que ejecutan Android 6.0 (nivel de API 23) y
versiones posteriores, el permiso puede ser
cualquiera 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; realiza la instalación en una ubicación


de almacenamiento interna del dispositivo.

2: Externo; realiza la instalación en medios


externos.

star Nota: Esto es solo para depurar. Su uso puede


provocar fallas en las apps y otros comportamientos
no deseados.

get-install-location Muestra la ubicación de instalación actual. Valores


que se muestran:
0 [auto]: Permite que el sistema decida la
mejor ubicación.

1 [internal]: Realiza la instalación en el


almacenamiento interno del dispositivo.

2 [external]: Realiza la instalación en medios


externos.

set-permission-enforced permission [true | Especifica si se debe aplicar el permiso otorgado.


false]

[Link] 31/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

trim-caches desired_free_space Recorta los archivos de caché para adaptarlos a un


espacio libre determinado.

create-user user_name Crea un usuario con el user_name proporcionado e


imprime el identificador nuevo del usuario.

remove-user user_id Quita el usuario con un user_id determinado y


borra todos los datos asociados con ese usuario.

get-max-users Imprime la cantidad máxima de usuarios que admite


el dispositivo.

get-app-links [options] [package] Imprime el estado de verificación del dominio para


el package determinado o para todos los paquetes
en caso de que no se especifique ninguno. Los
códigos de estado se definen de la siguiente
manera:

none: No se registró nada para este dominio.


verified: Se verificó correctamente el dominio.
approved: Se fuerza la aprobación,
generalmente a través del shell.

denied: Se fuerza la denegación, generalmente


a través del shell.

migrated: Se preserva la verificación de una


respuesta heredada.

restored: Se preserva la verificación de un


restablecimiento de datos del usuario.

legacy_failure: Un verificador heredado lo


rechaza por un motivo desconocido.

system_configured: La configuración del


dispositivo lo aprueba automáticamente.

>= 1024: Es un código de error personalizado


específico del verificador del dispositivo.

Las opciones son las siguientes:

--user user_id: Incluye las selecciones de los


usuarios. Incluye todos los dominios, no solo los
de autoVerify.

reset-app-links [options] [package] Restablece el estado de verificación del dominio


para un paquete determinado o para todos los

[Link] 32/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

paquetes en caso de que no se especifique


ninguno.

package: Es el paquete que se restablecerá, o


bien "todos" para restablecer todos los
paquetes.

Las opciones son las siguientes:

--user user_id: Incluye las selecciones de los


usuarios. Incluye todos los dominios, no solo los
de autoVerify.

verify-app-links [--re-verify] [package] Transmite una solicitud de verificación para el


package determinado o para todos los paquetes si
en caso de que no se especifique ninguno. Solo se
envía si el paquete no registró una respuesta.

--re-verify: Se envía aunque el paquete haya


registrado una respuesta.

set-app-links [--package package] state Configura de forma manual el estado de un dominio


domains para un paquete. Para que esto funcione, el paquete
debe declarar el dominio como autoVerify. Este
comando no informará un error en los dominios que
no se pudieron aplicar.

--package package: Es el paquete que se


configurará, o bien "todos" para establecer
todos los paquetes.

state: Es el código en el que se establecerán


los dominios. Los valores válidos son los
siguientes:

STATE_NO_RESPONSE (0): Se restablece


como si nunca se registrara ninguna
respuesta.

STATE_SUCCESS (1): Trata al dominio


como verificado correctamente por el
agente de verificación del dominio. Ten en
cuenta que el agente de verificación del
dominio puede anular esta acción.

STATE_APPROVED (2): Trata el dominio


como siempre aprobado, lo que evita que
el agente de verificación del dominio
pueda cambiarlo.

STATE_DENIED (3): Trata al dominio


como siempre denegado, lo que evita que

[Link] 33/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

el agente de verificación del dominio lo


cambie.

domains: Es una lista de dominios separados


por espacios que se cambiarán, o bien "todos"
para cambiar todos los dominios.

set-app-links-user-selection --user user_idConfigura de forma manual el estado de la selección


[--package package] enabled domains de un usuario del host para un paquete. Para que
funcione, el paquete debe declarar el dominio. Este
comando no informará un error en los dominios que
no se pudieron aplicar.

--user user_id: Es el usuario para el que se


cambiarán las selecciones.

--package package: Es el paquete que se


configurará.

enabled: Especifica si se debe aprobar el


dominio.

domains: Es una lista de dominios separados


por espacios que se cambiarán, o bien "todos"
para cambiar todos los dominios.

set-app-links-user-selection --user user_idConfigura de forma manual el estado de la selección


[--package package] enabled domains de un usuario del host para un paquete. Para que
funcione, el paquete debe declarar el dominio. Este
comando no informará un error en los dominios que
no se pudieron aplicar.

--user user_id: Es el usuario para el que se


cambiarán las selecciones.

--package package: Es el paquete que se


configurará.

enabled: Especifica si se debe aprobar el


dominio.

domains: Es una lista de dominios separados


por espacios que se cambiarán, o bien "todos"
para cambiar todos los dominios.

set-app-links-allowed --user user_id [-- Activa o desactiva la configuración de control de


package package] allowed vínculos verificados automáticamente para un
paquete.

--user user_id: Es el usuario para el que se


cambiarán las selecciones.

[Link] 34/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

--package package: Es el paquete que se


configurará, o bien o "todos" para configurar
todos los paquetes. Los paquetes se
restablecerán si no se especifica ninguno.

allowed: Debe ser "true" para permitir que el


paquete abra vínculos verificados
automáticamente y "false" para inhabilitarlo.

get-app-link-owners --user user_id [-- Imprime los propietarios de un dominio específico


package package] domains para un usuario determinado en orden de prioridad
bajo a alto.

--user user_id: Es el usuario que se buscará.


--package package: De manera opcional,
también imprime para todos los dominios web
declarados por un paquete, o bien "todos" para
imprimir todos los paquetes.

domains: Es la lista de dominios separados por


espacios para buscar.

Cómo llamar al administrador de políticas del dispositivo ( dpm )


Para ayudarte a desarrollar y probar tus apps de administración de dispositivos, envía
comandos a la herramienta del administrador de políticas del dispositivo ( dpm ). Usa la
herramienta para controlar la app de administración activa o cambia los datos de estado de
una política en el dispositivo.

En un shell, la sintaxis de dpm es la siguiente:

dpm command

También puedes emitir un comando del administrador de políticas del dispositivo directamente
desde adb , sin ingresar a un shell remoto.

adb shell dpm command

Tabla 3: Comandos disponibles del administrador de políticas del dispositivo

[Link] 35/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Comando Descripción

set-active-admin [options] component Establece component como administrador activo.

Las opciones son las siguientes:

--user user_id: Especifica el usuario de destino. Ta


para seleccionar el usuario actual.

set-profile-owner [options] component Establece el component como administrador activo y su


un usuario existente.

Las opciones son las siguientes:

--user user_id: Especifica el usuario de destino. Ta


para seleccionar el usuario actual.

--name name: Especifica el nombre de la organizació

set-device-owner [options] component Establece component como administrador activo y su pa

Las opciones son las siguientes:

--user user_id: Especifica el usuario de destino. Ta


para seleccionar el usuario actual.

--name name: Especifica el nombre de la organizació

remove-active-admin [options] componentInhabilita un administrador activo. La app debe declarar a


([Link]
el manifiesto. Este comando también quita los propietario

Las opciones son las siguientes:

--user user_id: Especifica el usuario de destino. Ta


para seleccionar el usuario actual.

clear-freeze-period-record Borra el registro del dispositivo de los períodos de suspen


actualizaciones de OTA del sistema. Esto es útil para evita
dispositivo cuando se desarrollan apps que administran p
administrar actualizaciones del sistema
([Link]

Compatible con dispositivos con Android 9.0 (nivel de AP

force-network-logs Hace que el sistema prepare cualquier registro de red exi


un DPC. Si hay conexiones o registros de DNS disponibles
onNetworkLogsAvailable()

[Link] 36/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

([Link]
419#onNetworkLogsAvailable([Link],%2
. Consulta Cómo registrar la actividad de red
([Link]

Este comando tiene un límite de índice. Compatible con d


28) y versiones posteriores.

force-security-logs Hace que el sistema ponga cualquier registro de segurida


registros disponibles, el DPC recibe la devolución de llama
([Link]
419#onSecurityLogsAvailable([Link],%2
. Consulta Cómo registrar la actividad de dispositivos emp
([Link]

Este comando tiene un límite de índice. Compatible con d


28) y versiones posteriores.

Cómo tomar una captura de pantalla


El comando screencap es una utilidad del shell para tomar una captura de la pantalla de un
dispositivo.

En un shell, la sintaxis de screencap es la siguiente:

screencap filename

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

adb shell screencap /sdcard/[Link]

Aquí te mostramos un ejemplo de una sesión de captura de pantalla en la que se usa 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/[Link]

[Link] 37/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

shell@ $ exit
$ adb pull /sdcard/[Link]

Cómo 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. Puedes usar este archivo para crear videos
promocionales o de capacitación, o para depurar y realizar pruebas.

En un shell, usa la siguiente sintaxis:

screenrecord [options] filename

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

adb shell screenrecord /sdcard/demo.mp4

Detén la grabación de la pantalla presionando Control+C. De lo contrario, la grabación se


detiene automáticamente a los tres minutos o al límite de tiempo establecido por --time-
limit .

Para comenzar a grabar la pantalla de tu dispositivo, ejecuta el comando screenrecord para


grabar el 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 y, al mismo tiempo, conservar 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.

[Link] 38/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Limitaciones de la utilidad screenrecord :

No se graba audio con el archivo de video.

La grabación de video no está disponible para dispositivos que ejecutan Wear OS.

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 screenrecord

Opciones Descripción

--help Mostrar sintaxis y opciones del comando

--size widthxheightEstablecer 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 establece 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 resultado 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.

Cómo leer perfiles de ART para apps


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

[Link] 39/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Nota: Solo es posible recuperar el nombre de archivo del perfil de ejecución si tienes acceso raíz al sistema
de archivos, por ejemplo, en un emulador.

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 lo siguiente:

adb pull /data/misc/profman/[Link]

Cómo restablecer dispositivos de prueba


Si pruebas tu app en varios dispositivos, quizás te convenga restablecer el dispositivo entre las
pruebas, por ejemplo, para quitar datos de los usuarios y restablecer el entorno de pruebas.
Puedes realizar un restablecimiento de fábrica de un dispositivo con Android 10 (nivel de API
29) o versiones posteriores mediante el comando shell testharness adb como se muestra a
continuación.

adb shell cmd testharness enable

Cuando restableces el dispositivo con testharness , el dispositivo crea automáticamente una


copia de seguridad de la clave RSA que permite depurar a través de la estación de trabajo
actual en una ubicación persistente. Por lo tanto, una vez que se restablece el dispositivo, la
estación de trabajo puede continuar depurando y emitiendo comandos adb al dispositivo sin
tener que registrar de forma manual una clave nueva.

Además, para que puedas seguir probando tu app de forma más fácil y segura, cuando usas
testharness para restablecer un dispositivo, también se cambian las siguientes opciones de
configuración del dispositivo:

El dispositivo configura algunos parámetros del sistema a fin de que no aparezcan los
asistentes de configuración iniciales del dispositivo. El decir, el dispositivo ingresa a un
estado desde el que puedes instalar, depurar y probar tu app.

[Link] 40/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

Configuración:

Inhabilita la pantalla de bloqueo.

Inhabilita las alertas de emergencia.

Inhabilita la sincronización automática para las cuentas.

Inhabilita las actualizaciones del sistema automáticas.

Otros:

Inhabilita las apps de seguridad preinstaladas.

Si tu app necesita detectar las opciones de configuración predeterminadas del comando


testharness y adaptarse a ellas, usa [Link]()
([Link]
419#isRunningInUserTestHarness())
.

sqlite
sqlite3 inicia el programa de la línea de comandos sqlite para examinar las bases de datos
SQLite. Incluye comandos como .dump para imprimir el contenido de una tabla y .schema con
el objetivo de imprimir la declaración SQL CREATE de una tabla existente. También puedes
ejecutar comandos SQLite desde la línea de comandos, como se muestra a continuación:

$ adb -s emulator-5554 shell


$ sqlite3 /data/data/[Link]/databases/[Link]
SQLite version 3.3.12
Enter ".help" for instructions

Nota: Solo es posible acceder a una base de datos SQLite si tienes acceso raíz al sistema de archivos, por
ejemplo, en un emulador.

Para obtener más información, consulta la documentación de la línea de comandos de


sqlite3 ([Link]

Backends USB de adb

[Link] 41/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

El servidor de adb puede interactuar con la pila USB a través de dos backends. Puede usar el
backend nativo del SO (Windows, Linux o macOS) o puede usar el backend libusb . Algunas
funciones, como attach , detach y la detección de velocidad mediante USB, solo están
disponibles cuando se usa el backend libusb .

Puedes elegir un backend con la variable de entorno ADB_LIBUSB . Si no está configurado, adb
usa su backend predeterminado. El comportamiento predeterminado varía según el SO. A
partir del nivel de API 34, se usa el backend nativo de forma predeterminada. Si se configura
ADB_LIBUSB , determina si se usa el backend nativo o libusb . Consulta la página del manual de
adb
([Link]
)
para obtener más información sobre las variables de entorno de adb.

Experimental: La compatibilidad para usar el backend libusb con Windows es experimental. A partir del
nivel de API 34, solo se probaron las plataformas macOS y Linux con la biblioteca libusb.

Backends de mDNS de adb


ADB puede usar el protocolo DNS de multidifusión para conectar automáticamente el servidor
y los dispositivos. El servidor ADB se envía con dos backends: Bonjour (mdnsResponder de
Apple) y Openscreen.

El backend de Bonjour necesita que se ejecute un daemon en la máquina anfitrión. En macOS,


el daemon integrado de Apple está siempre en ejecución, pero en Windows y Linux, el usuario
debe asegurarse de que el daemon mdnsd esté en funcionamiento. Si el comando adb mdns
check muestra un error, es probable que ADB esté usando el backend de Bonjour, pero que no
se esté ejecutando el daemon de Bonjour.

El backend de Openscreen no necesita un daemon para ejecutarse en la máquina. La


compatibilidad con el backend de Openscreen en macOS comienza en ADB v35. Windows y
Linux son compatibles a partir de ADB v34.

De forma predeterminada, ADB usa el backend de Bonjour. Este comportamiento se puede


cambiar con la variable de entorno ADB_MDNS_OPENSCREEN (configurada en 1 o 0 ). Consulta la
página del manual de ADB
([Link]
)
para obtener más detalles.

El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en
la Licencia de Contenido ([Link] Java y OpenJDK son marcas

[Link] 42/43
17/5/24, 13:05 Android Debug Bridge (adb) | Android Studio | Android Developers

registradas de Oracle o sus afiliados.

Última actualización: 2024-02-09 (UTC)

[Link] 43/43

También podría gustarte