#!/bin/sh set -e remote=${1} activity=${2} delay=${3} case "${EXPERIMENTAL_ADB_CHANNEL_TCP_PORT}" in '') t=`mktemp -d -t adb-channel.XXXXXX` adb_sock=localfilesystem:"${t}/sock" socat_sock=unix:"${t}/sock" atexit() { [ -z "${activity}" ] || adb shell am force-stop ${activity%%/*} adb forward --remove "${adb_sock}" rm -rf "${t}" } trap atexit EXIT ;; *) echo >&2 "WARNING: this ADB channel is open to everyone on this computer." adb_sock=tcp:"${EXPERIMENTAL_ADB_CHANNEL_TCP_PORT}" socat_sock=tcp:localhost:"${EXPERIMENTAL_ADB_CHANNEL_TCP_PORT}" ;; esac trap 'exit 0' HUP INT ALRM TERM [ -z "${activity}" ] || adb shell am start -W ${activity} [ -z "${delay}" ] || sleep "${delay}" adb forward "${adb_sock}" "${remote}" socat stdio "${socat_sock}"