La clave es poner en marcha adb
en un proceso separado (&).
me ocurrió con la siguiente secuencia de comandos para la instalación simultánea de fuego apagado en todos los dispositivos conectados de la mina y finalmente lanzar instalada la aplicación en cada uno de ellos:
#!/bin/sh
function install_job {
adb -s ${x[0]} install -r PATH_TO_YOUR_APK
adb -s ${x[0]} shell am start -n "com.example.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
}
#iterate over devices IP-addresses or serial numbers and start a job
while read LINE
do
eval x=($LINE)
install_job ${x[0]} > /dev/null 2>&1 &
done <<< "`adb devices | cut -sf 1`"
echo "WATING FOR INSTALLATION PROCESSES TO COMPLETE"
wait
echo "DONE INSTALLING"
Nota 1: la salida estándar y STDERR están suprimidos. No verá ningún resultado de operación de "instalación de adb". Esto puede mejorarse, supongo, si realmente tiene que
Nota 2: También podría mejorar la secuencia de comandos proporcionando args en lugar de ruta de acceso codificada y nombres de actividad.
De esa manera:
- No tiene que realizar manualmente instalar en cada dispositivo
- no tiene que esperar a que una instalación para terminar el fin de ejecutar otro (ADB tareas se ponen en marcha en paralelo)
uninstallapp.rb https://gist.github.com/XinyueZ/2d61133b6acbde19f3c5 installapk.rb https://gist.github.com/XinyueZ/2128a11e174141908728 – TeeTracker