diff --git a/utils/android-push.sh b/utils/android-push.sh index 5a0421326a35..6e09b50c70c4 100755 --- a/utils/android-push.sh +++ b/utils/android-push.sh @@ -11,15 +11,32 @@ fi # Push to Android Firefox if device is connected # XXX on some systems, adb may require sudo... -if type adb > /dev/null 2>/dev/null && adb devices >/dev/null 2>/dev/null ; then - ADB_FOUND=`adb devices | grep -v 'offline$' | tail -2 | head -1 | cut -f 1 | sed 's/ *$//g'` - if [ "$ADB_FOUND" != "List of devices attached" ]; then - echo Pushing "$XPI_NAME" to /sdcard/"$XPI_NAME" - adb push "../$XPI_NAME" /sdcard/"$XPI_NAME" - adb shell am start -a android.intent.action.VIEW \ - -c android.intent.category.DEFAULT \ - -d file:///mnt/sdcard/pkg/ \ - -n $ANDROID_APP_ID/.App +if type adb > /dev/null 2>/dev/null ; then + #running `adb devices` below will start adb server/daemon if it wasn't running already + #we start it and make note if it's us that started it or not, so we can stop it afterwards + if adb start-server 2>&1 |grep -qF 'daemon not running' ; then + we_started_adb_daemon=1 + else + we_started_adb_daemon=0 + fi + on_exit() { + if test "$we_started_adb_daemon" == "1"; then + #if we started it we kill it, to avoid constant dmesg PME# spam, see issue 18103 + adb kill-server + fi + } + trap on_exit EXIT SIGINT + + if adb devices >/dev/null 2>/dev/null ; then + ADB_FOUND=`adb devices | grep -v 'offline$' | tail -2 | head -1 | cut -f 1 | sed 's/ *$//g'` + if [ "$ADB_FOUND" != "List of devices attached" ]; then + echo Pushing "$XPI_NAME" to /sdcard/"$XPI_NAME" + adb push "../$XPI_NAME" /sdcard/"$XPI_NAME" + adb shell am start -a android.intent.action.VIEW \ + -c android.intent.category.DEFAULT \ + -d file:///mnt/sdcard/pkg/ \ + -n $ANDROID_APP_ID/.App + fi fi fi