Hay muchas cosas sobre Android Debug Bridge que quizás no conozcas. ¡Haga clic aquí para obtener algunos consejos y trucos útiles para usar ADB!
enlaces rápidos
- Acceso al shell
- Conexión a múltiples dispositivos
- Transferir archivos
- Inicio sesión
- Listado de aplicaciones instaladas a través de ADB
- Instalar y desinstalar aplicaciones a través de ADB
- Extraer APK con ADB
- Copia de seguridad y restauración de datos de la aplicación
- Listado de componentes de la aplicación
- Lanzamiento de actividades, servicios y receptores de radiodifusión.
- Deshabilitar y habilitar casi cualquier aplicación
- Capturando capturas de pantalla
- Transferir datos binarios entre la PC y el dispositivo Android
Si has sido un entusiasta de Android que acecha en la escena del modding, o un desarrollador de aplicaciones durante algún tiempo Con el tiempo, tarde o temprano, te toparás con una interesante herramienta llamada Android Debug Bridge, o ADB para corto. Se utiliza ampliamente en Android Studio como utilidad complementaria de línea de comandos. Los desarrolladores de Android también lo utilizan como una solución independiente para instalar y probar aplicaciones manualmente.
teléfonos inteligentes Android así como dispositivos Android emulados.Pero hay muchas cosas que ADB puede hacer, y la mayor parte no sólo es útil para los desarrolladores. Incluso si no eres desarrollador y estás leyendo este artículo, es muy probable que hayas usado ADB una o dos veces para descargar una aplicación o modificar un permiso. Pero eso no es todo para lo que se puede utilizar ADB. Continúe leyendo para conocer algunos consejos y trucos para usar ADB que quizás no conocía.
Necesitará tener ADB funcionando en su computadora. Asegúrese de consultar nuestro artículo sobre cómo instalar ADB si necesitas ayuda. En caso de que estés usando Windows, también necesitas instale los controladores USB OEM apropiados para tu dispositivo Android.
Acceso al shell
Si ha usado ADB antes, es posible que esté acostumbrado a ejecutar comandos todos en una sola línea. Pero también puedes usar ADB para abrir un terminal en tu dispositivo y ejecutar comandos directamente. ¡Y es fácil!
En su terminal o ventana del símbolo del sistema:
adb shell
Luego serás recibido con un $
símbolo donde puede ejecutar comandos directamente en su dispositivo.
Conexión a múltiples dispositivos
ADB puede comunicarse con varios dispositivos al mismo tiempo. Sin embargo, debe especificar el dispositivo de destino al emitir comandos ADB en tales escenarios.
Para hacer esto, necesitará saber el número de serie del dispositivo de destino. Puede obtener el número de serie usando el comando de dispositivos:
adb devices
Ahora, usa el -s
opción para especificar el número de serie del dispositivo de destino. Ejemplo:
adb -s <serialnumber> shell
Transferir archivos
Para los aficionados a la línea de comandos, ADB proporciona una forma muy sencilla de transferir archivos desde y hacia su dispositivo Android. Sólo usa el pull
comando para copiar archivos y directorios desde el dispositivo y el push
Comando para copiar archivos y directorios al dispositivo:
Si desea copiar un archivo o directorio con sus subdirectorios al dispositivo Android:
adb push local_path device_path
- Ejemplo:
adb push D:\image.png /sdcard
El siguiente comando copiará un archivo o directorio con sus subdirectorios desde el dispositivo Android a la PC host:
adb pull device_path local_path
- Ejemplo:
adb pull /sdcard/backup_April.tar D:\Backup
Inicio sesión
Android Studio proporciona la ventana de logcat, que admite la visualización de registros desde su dispositivo en tiempo real. Sin embargo, no es exactamente útil para el procesamiento por lotes. Afortunadamente, los dispositivos Android vienen con el comando logcat disponible a través de ADB, que puede usarse para volcar mensajes de registro del sistema y de aplicaciones e imprimirlos en la pantalla.
La sintaxis básica es la siguiente:
adb logcat
Para saber más, echa un vistazo a nuestro tutorial sobre cómo tomar logcats del sistema, registros del kernel y dmesg en Android.
huevos de Pascua
Google ofrece dos ingeniosos huevos de Pascua relacionados con el comando logcat.
- El primero es lolcat, un guiño al meme jajaja. Proporciona el mismo resultado que el comando logcat normal.
adb lolcat
- El segundo es longcat, que es equivalente al comando logcat -v long. Muestra todos los campos de metadatos y mensajes separados con una línea en blanco.
adb longcat
Listado de aplicaciones instaladas a través de ADB
Para ver las aplicaciones instaladas en su dispositivo, puede usar el siguiente comando:
adb shell pm list packages
Esto devolverá una lista de los nombres de los paquetes de las aplicaciones instaladas, con cada una en su propia línea precedida por package:
.
Opciones
También hay algunas opciones que puede utilizar para recuperar listas más específicas.
- -F incluirá la ruta al APK base para cada aplicación, junto con el nombre de su paquete.
- -a se asegurará de que se devuelvan todos los paquetes conocidos que no sean APEX.
- -d hará que el comando solo devuelva paquetes deshabilitados.
- -mi hará que el comando solo devuelva paquetes habilitados.
- -s hará que el comando solo devuelva paquetes del sistema.
- -3 hará que el comando solo devuelva paquetes de terceros.
- -i incluirá el nombre del paquete de instalación para cada paquete.
- -U incluirá el UID del paquete para cada paquete.
- -tú incluirá paquetes desinstalados.
- --show-código de versión incluirá el código de versión para cada paquete.
- --apex-solo solo devolverá paquetes APEX.
- --uido solo mostrará paquetes con el UID dado.
- --usuario solo mostrará paquetes que pertenecen al ID de usuario dado.
Instalar y desinstalar aplicaciones a través de ADB
Este es un uso relativamente común de ADB, pero vale la pena mencionarlo de todos modos. Entre otras formas, también puedes utilizar ADB para instalar y desinstalar aplicaciones de Android a su dispositivo Android.
Instalar un APK
Si tiene un APK en su computadora, puede instalarlo en su dispositivo con lo siguiente:
adbinstall-rsomeapk.apk
Recuerde reemplazar someapk.apk
con la ruta completa al APK que deseas instalar.
Opciones
Hay varias opciones para instalar APK a través de ADB.
- El -r La opción permite que ADB se instale sobre una aplicación existente (es decir, actualizar). En Android Pie y versiones posteriores, no es necesario especificar esta opción.
- El -R opción, para Android Pie y versiones posteriores, hará que la instalación falle si la aplicación ya está instalada.
- El -i La opción le permite especificar un nombre de paquete de instalación. Esto es lo que se devuelve si Android quiere saber qué instaló el APK.
- El -t opción permite un APK con Android: testOnly="verdadero" en su manifiesto para ser instalado.
- El -d La opción permite que el APK especificado sea una degradación a una aplicación ya instalada. Esto sólo funciona si ambas versiones de la aplicación son depurables.
- El -gramo opción para Android Marshmallow y posteriormente otorga automáticamente todos los permisos de tiempo de ejecución a la aplicación instalada.
Esos no son todos. Si desea una lista completa, puede consultar la documentación incorporada.
Múltiples APK y paquetes
Si tiene varios APK que desea instalar a la vez, ya sea desde varias aplicaciones o porque está instalando un paquete de aplicaciones, puede usar ADB. install-multiple
y install-multi-package
características.
Si todos sus APK son para una aplicación, use install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
De lo contrario, utilice install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Las opciones para estos comandos son similares a install
, pero con algunas limitaciones. Consulte la documentación integrada de ADB para conocer las opciones disponibles.
Desinstalar una aplicación
Para desinstalar usando ADB, necesitará el nombre del paquete de la aplicación que desea desinstalar. Consulte la sección para Listado de aplicaciones instaladas si aún no lo has hecho.
Una vez que tenga el nombre del paquete, desinstalarlo es tan simple como:
adb uninstall <packagename>
Por lo general, no puedes desinstalar el sistema o las aplicaciones preinstaladas con este comando. Sin embargo, es posible que puedas desactivarlos con ADB. Consulta la sección Deshabilitar y habilitar casi cualquier aplicación para detalles.
Extraer APK con ADB
Hay muchas razones por las que es posible que desees extraer los APK de una aplicación. Tal vez quieras hacer una copia de seguridad para usarlo en el futuro, o tal vez ya no esté disponible en línea y quieras transferirlo a un dispositivo diferente.
Extraer una aplicación usando ADB es bastante simple. Primero, querrás encontrar el nombre del paquete de la aplicación que deseas extraer. Hay varias formas de hacer esto, pero la más sencilla suele ser usar la aplicación Configuración de su dispositivo para ver la lista de todas las aplicaciones instaladas, seleccione la que desee y desplácese hacia abajo hasta encontrar el nombre del paquete o la aplicación IDENTIFICACIÓN.
Una vez que tenga el nombre del paquete, ejecute el siguiente comando:
adb shell pm path <packagename>
Este comando devolverá la ruta de todos los APK para ese nombre de paquete.
Luego puede usar el siguiente comando para extraer cada APK a su computadora:
adb pull /path/to/apk.apk
Copia de seguridad y restauración de datos de la aplicación
Aunque Google aún no ha creado una metodología de copia de seguridad con un solo clic similar a iOS, puedes usar ADB para realizar copias de seguridad y restaurar aplicaciones instaladas junto con sus datos. Sin embargo, la funcionalidad está lejos de ser perfecta y Google ya ha marcó la característica como obsoleta.
Respaldo
Para hacer una copia de seguridad de una sola aplicación, con su APK:
adb backup -apk <packagename> -f package_name_backup.ab
En caso de que quieras hacer una copia de seguridad de todos los datos de la aplicación a la vez:
adb backup -f all -all -apk -nosystem
Dado que el módulo de restauración no puede realizar una restauración específica de una aplicación individual, es mejor crear copias de seguridad específicas del paquete. El siguiente fragmento de comando (compatible con Linux/macOS y el subsistema de Windows para Linux) puede hacerlo por usted:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Restaurar
Primero, necesitas instalar el APK guardado;
adb install <packagename>.apk
Luego puedes restaurar sus datos:
adbrestorepackage_name_backup.ab
Para reiterar, las funcionalidades de copia de seguridad y restauración de ADB tienen múltiples advertencias, incluidos resultados variables según la ROM.
Listado de componentes de la aplicación
Los componentes de una aplicación son cosas como sus actividades, receptores de transmisión, servicios, etc. A veces es útil saber los nombres de estos componentes en una aplicación específica, especialmente si deseas iniciar actividades ocultas o enviar una transmisión con datos específicos.
Desafortunadamente, ADB no tiene una forma muy clara de enumerar los componentes de una aplicación. Pero es posible. Ejecute el siguiente comando:
adb shell dumpsys package
Se devolverá una gran cantidad de texto.
- Desplázate hasta encontrar el Tabla de resolución de actividades título para ver las Actividades.
- Mira por debajo Tabla de resolución del receptor para receptores de transmisión.
- Comprobar el Tabla de resolución de servicios para Servicios.
- Etcétera.
Cada componente mostrará la acción necesaria para iniciarlo, el nombre del componente y posiblemente alguna información adicional.
Alternativamente, si desea una manera más fácil de ver actividades, servicios y receptores, puede usar la aplicación Root Activity Launcher del desarrollador reconocido por XDA. zacharee1. Le mostrará esos componentes para cada aplicación, junto con muchas otras funciones útiles.
Precio: 0,99.
Lanzamiento de actividades, servicios y receptores de radiodifusión.
ADB también se puede utilizar para iniciar actividades, iniciar servicios y notificar a BroadcastReceivers. Incluso puede especificar URI de datos y extras de intención si es necesario.
Para iniciar componentes, necesitará el nombre del componente que desea iniciar. Puedes ver cómo conseguirlo desde el Listado de componentes de la aplicación sección.
La sintaxis del comando para iniciar una actividad es algo como esto:
am start -a <action> -n <component>
La sintaxis del comando para iniciar un Servicio es algo como esto:
am startservice -a <action> -n <component>
La sintaxis del comando para notificar a un BroadcastReceiver es algo como esto:
am broadcast -a <action> -n <component>
En la mayoría de los casos, para Actividades y Servicios, no es necesario especificar una acción explícitamente. Por lo general, sólo lo necesitará si el componente utiliza otro que no sea android.intención.acción. PRINCIPAL.
Además de la sintaxis básica, aquí se explica cómo especificar más datos para pasar. En general, todos los valores de datos deben estar entre comillas dobles.
- -d le permite especificar un URI de datos.
- -mi o --es le permite especificar una cadena adicional.
- --esn le permite especificar una cadena nula adicional.
- --ez se utiliza para especificar un extra booleano.
- --ei se utiliza para especificar un número entero extra.
- --el es para especificar un extra largo.
- --ef Pasará un flotador extra.
- --UE pasa un URI extra.
- --ecn se puede utilizar para especificar un nombre de componente adicional.
-
--eya
pasará los valores como un Integer[] extra., ,... -
--eial
pasará los valores como una lista, ,... . - Los mismos argumentos de matriz y lista también funcionan para largos, flotantes y cadenas. Simplemente reemplace el i con la letra correspondiente.
- -F le permite especificar una bandera.
Hay aún más opciones de comportamiento que puedes usar, así que consulta la documentación incorporada para obtener más detalles.
Deshabilitar y habilitar casi cualquier aplicación
Las aplicaciones del sistema en Android no se pueden desinstalar y, desafortunadamente, muchas de ellas tampoco se pueden desactivar a través de Configuración. Si bien ADB no te permitirá desinstalarlos, puede ayudarte a desactivarlos.
Primero, asegúrese de obtener el nombre del paquete de la aplicación que desea deshabilitar. Luego, prueba estos comandos. Si uno falla, pruebe la siguiente opción.
-
pm desactivar
- Para volver a habilitar, use pm habilitar
-
pm desactivar-usuario --usuario 0
- Para volver a habilitar, use pm habilitar
-
pm esconder
- Para volver a habilitar, use pm mostrar
-
pm suspender
- Para volver a habilitar, use pm suspender
-
pm desinstalar -k --usuario 0
- Para volver a habilitar, use pm instalar-existente
- Éste desinstala efectivamente la aplicación de su perfil de usuario. Mientras que el comando para volver a habilitar debería funcione, no hay garantía de que así sea. Es posible que tengas que restablecer los valores de fábrica para restaurar la aplicación.
- Si está utilizando varios perfiles de usuario en su dispositivo, asegúrese de reemplazar 0 en los comandos anteriores con la identificación de usuario real que tiene.
- Para volver a habilitar, use pm instalar-existente
Para saber más, consulte nuestro tutorial sobre cómo desinstalar bloatware de operador y OEM sin acceso de root.
Capturando capturas de pantalla
La mayoría de las ROM de Android ofrecen dos útiles utilidades de shell (screencap y screenrecord) para tomar capturas de pantalla y grabar actividades de la pantalla, respectivamente. Puede llamarlos directamente desde el shell ADB para capturar una captura de pantalla estática o un fragmento de video de la pantalla de su teléfono y guardarlo directamente en el almacenamiento interno del dispositivo.
La sintaxis para realizar una captura de pantalla es bastante sencilla:
adb shell screencap /sdcard/screenshot.png
De manera similar, si necesita tomar una captura de pantalla dinámica, haga lo siguiente:
adb shell screenrecord /sdcard/recording.mp4
Como es de esperar, la herramienta Screencap es bastante simple, mientras que la utilidad ScreenRecord ofrece varios parámetros. Las opciones para este último son las siguientes:
-
--tamaño ANCHOxALTO
- Establezca la resolución del archivo de vídeo (por ejemplo, "1280x720"). De forma predeterminada, intenta tomar la resolución de pantalla principal del dispositivo de destino (si es compatible) y, de lo contrario, vuelve a 1280x720.
-
--tasa de bits
- Establece la tasa de bits del vídeo, en bits por segundo. El valor se puede especificar como bits o megabits, p.e. '4000000' equivale a '4M'.
-
--informe de error
- Puede agregar información adicional, como una superposición de marca de tiempo, que puede resultar útil para ilustrar errores.
-
--tiempo límite TIEMPO
- Establece el tiempo máximo de grabación, en segundos. El valor predeterminado/máximo es 180.
-
--ID de visualización
- Especifique el ID de pantalla física para grabar. El predeterminado está configurado en la pantalla principal. Consulte "dumpsys SurfaceFlinger --display-id" para obtener ID de pantalla válidas.
-
--verboso
- Muestra información detallada sobre la sesión de grabación.
Puede ampliar aún más las capacidades de las utilidades de captura de pantalla integradas de Android al scrcpy. Es una solución de duplicación de pantalla de código abierto, que utiliza el poder de ADB.
Transferir datos binarios entre la PC y el dispositivo Android
En caso de que no desee generar un shell ADB completo, pero desee incorporar un paso simplificado de datos binarios entre la PC host y el dispositivo Android de destino, puede utilizar el exec-in
y exec-out
comandos.
A pesar de su existencia prolongada, los comandos exec-in y exec-out aún no están documentados. Podrían provocar daños en los archivos debido a la forma en que los diferentes shells manejan las entradas y salidas. Úselo con precaución.
El primero le ayuda a ejecutar un comando en Android y alimentar la entrada de la consola sin filtrar como parámetro, mientras que el el segundo hace exactamente lo contrario, es decir, ejecuta un comando en Android y captura su salida binaria sin filtrar por parte del sistema operativo host.
Ejemplo:
adb exec-out "screencap -p" > "D:\screenshot.png"
Esto utilizará el screencap
comando de Android para capturar una captura de pantalla de la pantalla del teléfono, pero la guarda directamente como captura de pantalla.png en la partición D: de la PC host (siempre que esté ejecutando Windows). Por otro lado,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Esto extraerá el contenido del archivo backup.tar almacenado en la partición D: de la PC host (que ejecuta Windows) en la raíz del almacenamiento interno del dispositivo Android.
ADB es una herramienta increíblemente poderosa y puede hacer mucho más que lo mencionado anteriormente. Los comandos de este artículo son sólo un punto de partida útil. Para un uso más avanzado, consulte comandos como cmd-l para ver diferentes servicios con los que podrías interactuar y ls -l /sistema/bin para ver los diferentes ejecutables de comandos disponibles en tu ROM de Android.
Para conocer otros viajes y garrapatas de Android, consulte nuestras guías en cómo rootear tu teléfono inteligente Android, cómo instalar la recuperación TWRP, y cómo instalar una ROM personalizada en su dispositivo Android.