Utilice ADB para las tareas diarias.Si está desarrollando una aplicación para Android, … | Autor: Aung Kyaw Paing | Septiembre de 2021


Si está desarrollando una aplicación de Android, a menudo querrá saber cómo se comunica nuestra PC con el dispositivo Android durante la depuración. Bueno, la respuesta es a través de Android Debug Bridge, adb
Abreviatura. Cuando ejecute su aplicación, la computadora instalará la apk de depuración adb install
Y comienza la aplicación adb am start
(Am significa administrador de eventos más sobre lo siguiente).Pero hay mas adb
No solo eso, de hecho, hay algunos comandos que pueden ayudarlo con sus actividades diarias.
Instalar ADB
Primero, intente correr adb
En su terminal para asegurarse de que esté instalado en su sistema.Si ves algo a lo largo de la línea command not found
,esto significa adb
Aún no está instalado.Para MacOS, ejecute brew install android-platform-tools
no debería ser problema.Para el resto (y MacOS y si lo prefieres manual), puedes seguir los pasos a continuación
- Descargue las herramientas de la plataforma aquí
- Descomprímelo donde quieras guardarlo (preferiblemente
~/Android/platform-tools
) - Luego, en su configuración de shell (
~/.bashsrc
,~/.zshrc
Etc.) Agregue las siguientes líneas (para Windows, es posible que deba agregar la ruta dentroSystem variables
):
export PATH=$PATH:$YOUR_EXTRACTED_PATH/platform-tools
Luego de eso tendremos que recargar el shell (cerrar y abrir la terminal).Entonces intenta correr adb
de nuevo. Si funciona, podemos continuar explorando algunos de sus usos.
Configurar la depuración de dispositivos físicos
Si está utilizando un dispositivo físico, debe habilitar la depuración USB en el dispositivo.Primero, habilite las opciones de desarrollador ingresando System => About
, luego haga clic en Número de versión interno Siete veces. Algunos dispositivos tienen diferentes formas de habilitar las opciones de desarrollador, por lo que si los pasos comunes no funcionan, busque en Google para su dispositivo.Después de eso, ingrese Developer Options
Y habilitar «Depuración USB«.
Luego, conecte su dispositivo a su PC y ejecute adb devices
En la terminal. Compruebe si aparece el nombre de su dispositivo.
De lo contrario, es posible que su PC no pueda reconocer su dispositivo (especialmente en Windows que requiere controladores) o que la depuración USB no esté habilitada.Si esta es tu primera conexión adb
, Es posible que también deba autorizar su PC en su dispositivo Android, que debería mostrar un cuadro de diálogo emergente. No se preocupe, puede revocar el acceso más tarde en las opciones de desarrollador.Si su dispositivo aparece en adb devices
Entonces podemos continuar.
Si desea ir más allá, de alguna manera podemos dejar obsoleto el cable USB.Puedes habilitar Wireless ADB Debugging
existe Developer Options
. después,
- Conecte su dispositivo a la PC mediante USB
- correr
adb tcpip 5555
Hágalo escuchar en el puerto 5555. - correr
adb shell netcfg
oadb shell ifconfig
Verifique la IP de su dispositivo Android - Desconecte el USB
- correr
adb connect $DEVICE_IP:5555
Conéctese a su dispositivo de forma inalámbrica
Asegúrate de correr adb usb
Porque es peligroso abrirlo en la red (especialmente pública)
En Android 11 y versiones posteriores, Android ahora tiene una función que facilita la depuración inalámbrica. Los dispositivos se pueden emparejar de forma inalámbrica a través de un código de emparejamiento o un código QR sin tener que conectarse a la PC por primera vez.Grifo Wireless Debugging
Mostrará una pantalla similar a la que se muestra a continuación:
Haga clic en «Emparejar el dispositivo con el código de emparejamiento y verá una ventana emergente similar a la siguiente:
Ve a la terminal y corre adb pair $DEVICE_IP_AND_PORT $PAIRING_CODE
Debería conectarse a su teléfono.
~ adb pair 192.168.1.39:39005 954121
Successfully paired to 192.168.1.39:39005 [guid=adb-ec54c0bd-nyDhpf]
Empujar y tirar archivos
Si alguna vez ha utilizado una Mac, estará familiarizado con la transferencia de archivos de Android. Para Linux y Windows, podemos buscar manualmente el archivo y copiarlo y pegarlo en nuestra computadora.Sin embargo, prefiero transferir archivos de las siguientes formas adb
Porque me ahorra la molestia de tener que conectar USB.
Si queremos transferir De mi computadora al dispositivo, Nosotros podemos usar adb push
Pedido.
adb push $FILE_IN_YOUR_PC$ $PATH_IN_YOUR_DEVICE$
Por ejemplo, si quiero enviar el documento al dispositivo, puedo ejecutar
adb push ~/document.txt /sdcard/document.txt
Reversiblemente, podemos realizar adb pull
Para transferir Del dispositivo a la PC.
adb pull $FILE_IN_YOUR_DEVICE$ $FILE_IN_YOUR_PC$
adb pull /sdcard/document.txt ~/document.txt
con adb
, No es necesario utilizar cables, correo electrónico, AirDroid ni ninguna otra herramienta para volver a transferir con el dispositivo.
ingreso automático
adb
También se puede utilizar para completar formularios automáticamente cuando realiza pruebas manuales. adb
Permitirle enviar input
Comando al dispositivo.Estas entradas pueden ser tocar, ingresar texto o enviar eventos clave, como ENTER
, TAB
Espera, echemos un vistazo a esta escena que necesito ingresar. user1
con password1
.
Podemos usar el siguiente comando para ingresar texto en el campo de nombre de usuario o contraseña
adb shell input text $YOUR_TEXT$
adb shell input text user1 && adb shell input text password1
Si ejecuta el comando en la terminal, encontrará que no es completamente correcto. password1
Se agregará después del final user1
. Eso es porque no transferimos Atención La entrada de texto lo hace. Debemos cambiarlo de la entrada del nombre de usuario a la entrada de la contraseña.Para esto, asumiendo que tiene el apropiado nextFocus
Los atributos en su entrada, podemos enviar un TAB_EVENT
Al dispositivo para cambiar entre entradas.Puede encontrar todos los códigos de evento de entrada posibles aquí, si se desplaza hacia abajo, verá KEYCODE_TAB
Se establece en 61
. Para eventos críticos, debemos usar input keyevent $KEY_EVNET_CODE
. Se parece a esto
adb shell input keyevent 61
Si combinamos todos estos, tendremos la siguiente línea de código, que escribirá automáticamente las credenciales para nuestra cuenta de prueba.
adb shell input text user1 && adb shell input keyevent 61 && adb shell input text password1
Si has capturado ENTER
El evento clave de comenzar a iniciar sesión, incluso podemos usar input keyevent 66
Presione Enter, luego comience cero haga clic manual para iniciar sesión.
Personalmente, completé un alias para formularios repetidos en mi configuración de shell porque redujo mi tiempo durante las pruebas manuales.Además, parece magia En presentaciones y presentaciones, cuando vea pequeños comandos similares testAccountLogin
La ejecución está en curso, todo es normal.
alias testAccountLogin = adb shell input text user1 && adb shell input keyevent 61 && adb shell input text password1
Dije que el ejemplo anterior asume que tienes el apropiado nextFocus
Los atributos de la entrada.Sin embargo, si está probando una aplicación de terceros y la aplicación no es realmente correcta nextFocus
? ¿Cómo cambiamos automáticamente entre las entradas?No se preocupe, todavía podemos usar input tap $X_VALUE $Y_VALUE
Toca la pantalla.Hay dos formas, la primera implica
- correr
adb shell getevent -l
Registrar eventos de entrada en la terminal - Presione manualmente su campo de entrada
- Comprueba si hay
ABS_MT_POSITION_X
conABS_MT_POSITION_Y
En la terminal - Copiar valores (deben estar en hexadecimal)
- Convertir valor a valor decimal
- correr
adb shell input tap $DECIMAL_X $DECIMAL_Y
Vea si hizo clic en el campo de entrada
Esto implica algunos pasos complicados, por lo que prefiero usar una forma más directa.
- Opciones de desarrollador abiertas
- Habilitar
Input > Pointer Options
- Comprueba si puedes ver los números en la parte superior de la pantalla.
- Mantenga su dedo o coloque el cursor en el campo de entrada
- Copie los valores x, y (generalmente en la esquina superior izquierda de la pantalla)
- correr
adb shell input tap $dx $dy
Vea si hizo clic en el campo de entrada
En nuestro ejemplo, también puedo usar el comando tap para hacer lo mismo
adb shell input text user1 && adb shell input tap x y && adb shell input text password1
Esto se aplica a cualquier elemento de la pantalla, incluidos los botones. El comando completo, incluido el clic en el botón de inicio de sesión, es el siguiente:
adb shell input text user1 && adb shell input tap x y && adb shell input text password1 && adb shell input tap x y
Captura de pantalla y grabación de video
Otra tarea común es tomar capturas de pantalla y grabar videos. Son útiles cuando desea informar un problema y desea mostrar claramente los pasos de la copia. Primero comencemos con la captura de pantalla.
adb shell screencap $PATH_IN_DEVICE
Por ejemplo, podemos ejecutar adb shell screncap /sdcard/our_screencap.png
. Entonces podemos ejecutar adb pull /sdcard/our_screencap.png
Extrae la captura de pantalla en nuestra PC.
Para la grabación de video, podemos realizar
adb shell screenrecord $PATH_IN_DEVICE
Después de terminar de grabar, podemos presionar Ctrl + C (o Comando + C en MacOS) para detener la grabación.Similar a lo anterior, también podemos ejecutar adb pull
Después de grabar, extraiga el archivo a nuestra computadora de desarrollo. Además, podemos ofrecer opciones como resolución, tasa de bits, tiempo, etc. Puede explorar estas opciones aquí. Tenga en cuenta que este método tiene algunas limitaciones, como que no puede girar la pantalla durante la grabación y no captura el audio.
Probar enlace profundo
Los enlaces profundos son una de las pocas pruebas tediosas porque tienes que hacer clic manualmente en el enlace en alguna aplicación de terceros para ver si tu aplicación está manejando el enlace correctamente.Podemos eliminar esta necesidad de aplicaciones de terceros utilizando esta función para probar adb
. Como se describe en este documento, puede ejecutar el siguiente comando
adb shell am start
-W -a android.intent.action.VIEW
-d <URI> <PACKAGE>adb shell am start
-W -a android.intent.action.VIEW
-d "example://gizmos" com.example.android
Para descomponer este comando,
am
Representa al administrador de actividades.Por simplicidad, en Android, cada aplicación tiene unactivity
O másactivities
Lleve la IU que el usuario pueda ver. El administrador de actividades sabe qué aplicaciones tienen qué actividades y podemos iniciar una pantalla / actividad específica a través del administrador de actividades.-W
Indica que está esperando a que se complete el lanzamiento.-a android.intent.action.VIEW
Es donde especificamos la operación a realizar. En Android, tenemos operaciones predefinidas que el sistema operativo comprende, y el sistema operativo puede usar esta información para enrutar operaciones a la aplicación correspondiente. Si alguna vez ha abierto un archivo y desea conocer el origen de todas estas aplicaciones en la ventana emergente, la respuesta es a través de esta función del sistema operativo. El sistema operativo sabe qué aplicación puede manejar qué archivo, es decir, qué acción.-d <URI> <PACKAGE>
: el destino especifica dos parámetros, el primero es nuestro uri de enlace profundo, el segundo es la aplicación que queremos vista Este enlace profundo. Para el primero, reemplácelo con el enlace que desea probar, y para el segundo, puede ingresar el nombre del paquete de la aplicación.
Si ejecuta este comando, el sistema operativo debería iniciar su aplicación. Primero, el sistema operativo primero preguntará a la aplicación si puede manejar este tipo de enlace profundo. Si la aplicación puede manejar el enlace profundo, recibirá el enlace profundo. Ahora la aplicación es responsable de analizar y administrar el enlace profundo.