Logo-Spanish

GR

 

 

 

QA AUTOMATION ENGINEER

 

Consejo rápido: Como instalar y desinstalar aplicaciones en varios dispositivos Android a la vez

De mi contribución en el blog de la empresa para la que trabajo.

Recientemente, mientras trabajaba en un proyecto de móvil. En poco tiempo, me vi ocupando mucho tiempo conectando un equipo, desinstalando la versión anterior de mi aplicación bajo pruebas (AUT), instalando la nueva y desconectando ese equipo solo para hacer lo mismo con otros 6 o 7 equipos (me gustaría platicarles del por qué es mejor realizar test en dispositivos que en simuladores, pero ese tema requiere su propio post).

 

En este artículo, quiero describir la solución que encontré para administrar varios dispositivos conectados con un solo comando. Primeramente adquirí este hub usb, (lo puedes comprar en Amazon aquí), el cual es sólo una de muchas otras opciones que hay disponibles, dependiendo del arreglo, números de puertos, forma, etc. Yo elegí este porque es barato y los interruptores son muy útiles ya que podemos excluir los dispositivos con el solo hecho de apagar el interruptor específico, sin la necesidad de que tener que estar conectando/desconectando ningún dispositivo.

usbHub

El agregar más puertos a tu computadora es una ayuda por sí mismo, pero les tenemos que sacar el máximo beneficio. Por ejemplo, cuando trabajamos con dispositivos Android y queremos instalar una aplicación tenemos que escribir, en la terminal, el siguiente comando:

adb install -r path/to/the/app/to/install.apk

Esto funciona bien cuando tienes un solo dispositivo conectado porque adb está diseñado para trabajar con un solo dispositivo, pero cuando tienes múltiples dispositivos conectados, obtenemos un error, como el siguiente:

- waiting for device -
error: more than one device and emulator
- waiting for device -
error: more than one device and emulator
- waiting for device -
Failure

Lo que necesitamos hacer es especificar, a adb, cual es el dispositivo al cual deseamos enviar el comando. Para ello primeramente necesitamos obtener el ID de cada dispositivo conectado, escribiendo:

adb devices

Este comando nos regresará algo como:

List of devices attached 
04544fawebf0b595dc 	device
13928weff7c 	device

Después, para instalarlo en cada dispositivo, necesitamos copiar cada una de esos IDs y debemos incluirlos en el siguiente comando:

adb -s (deviceID) install -r path/to/the/app/to/install.apk

Si tuviera que hacer esto, necesitaría copiar el ID de cada dispositivo, escribir el comando siete veces, pegando un ID diferente cada vez. A pesar de que es mejor que conectar y desconectar cada dispositivo, esta no es la forma más productiva de hacerlo.

Buscando en la web alguna solución, encontré en Stackoverflow una manera de resolver muy bien este problema.

Instalación.

 

Primero, copia y pega el siguiente código en un nuevo archivo llamado adb+

#!/bin/bash
# Script adb+
# Usage
# You can run any command adb provides on all your currently connected devices
# ./adb+ <command> is the equivalent of ./adb -s <serial number> <command>
#
# Examples
# ./adb+ version
# ./adb+ install apidemo.apk
# ./adb+ uninstall com.example.android.apis
 
adb devices | while read line
do
    if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ]
    then
        device=`echo $line | awk '{print $1}'`
        echo "$device $@ ..."
        adb -s $device $@
    fi
done

Despues guarda el archivo nuevo en el mismo folder que contiene adb dentro del folder de tu instalación de Android SDK. Probablemente este debería ser platform-tools.

Uso

Usar este script es muy sencillo. Cuando tenemos más de un dispositivo conectado (siempre debemos usar primero adb devices, solo para asegurarte que todos los dispositivos están conectados) solo necesitamos trabajar como si estuviéramos usando adb, reemplazando cualquier comando “adb” por “adb+”. Por ejemplo, si queremos instalar una app:

adb+ install -r path/to/the/app/to/install.apk

Esto nos regresa algo como esto:

04544fabs23f0b595dc install -r /path/to/your/app/name_of_the_app.apk ...
4619 KB/s (13249277 bytes in 2.800s)
	pkg: /data/local/tmp/name_of_the_app.apk
Success
1399834vskj28f7c install -r/path/to/your/app/name_of_the_app.apk ...
3608 KB/s (13249277 bytes in 3.585s)
	pkg: /data/local/tmp/name_of_the_app.apk
Success

 

Solución de Problemas.

Si cuando intentas correr adb+ te encuentras con el siguiente error:

-bash: adb+: Permission denied

Tu bash script simplemente no es ejecutable. Esto es muy fácil de arreglar, corre el siguiente comando desde el directorio que contiene el script:

chmod 755 ./adb+

Ahora corre el comando, entonces ya podrás ver el resultado que esperas.

¡Eso es todo!. El nuevo script pasará a cada uno de los dispositivos, realizando la misma acción. La aplicación se instalará en cada uno de los dispositivos conectados y te estarás ahorrando algunos minutos.

¿Que opinas? ¿Crees que esto te pueda ayudar en tu próximo proyecto móvil?. ¡Déjamelo saber en los comentarios acá abajo!