wait-for-emulator 746 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#!/bin/bash

sec=0
timeout=360

err() {
	echo "$@"
	exit 1
}

explain() {
	if [[ "$1" =~ "not found" ]]; then
		printf "device not found"
	elif [[ "$1" =~ "offline" ]]; then
		printf "device offline"
	elif [[ "$1" =~ "running" ]]; then
		printf "booting"
	else
		printf "unknown: $1"
	fi
}

while true; do
	if [[ $sec -ge $timeout ]]; then
		err "Timeout ($timeout seconds) reached - Failed to start emulator"
	fi
	out=$(adb -e shell getprop init.svc.bootanim 2>&1)
	if [[ "$out" =~ "command not found" ]]; then
		err "$out"
	fi
	if [[ "$out" =~ "stopped" ]]; then
		break
	fi
	exp=$(explain "$out")
	let "r = sec % 5"
	if [[ $r -eq 0 ]]; then
		echo "Waiting for emulator to start: $exp"
	fi
	sleep 1
	let "sec++"
done

echo "Emulator is ready"