简单使用:
$ source okadb.sh $ adbsetenv null $ okadb shell 1) 7f7c509e 2) 0123456789 3) 123 4) 2.2.2.108:5555 #? 4 select android device is 2.2.2.108:5555 root@pone:/ # exit $ adbsetenv 1) 7f7c509e 2) 0123456789 3) 123 4) 2.2.2.108:5555 #? 2 $ okadb shell select android device is 0123456789 root@d508:/ # exit $ adbsetenv null $ okadb tcpip 5555 1) 7f7c509e 2) 0123456789 3) 123 4) 2.2.2.108:5555 #? 1 select android device is 7f7c509e restarting in TCP mode port: 5555 $ adbrename myname 1) 0123456789 2) 123 3) 2.2.2.108:5555 4) 7f7c509e #? 1 * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached 7f7c509e device 123 device myname device
#!/bin/bash
# Author: momo0853@live.com
# Time : Fri May 29 18:04:09 CST 2015
_okadb()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="shell push pull install tcpip usb logcat root reboot reboot-bootloader forward devices kill-server remount"
case "$prev" in
shell | pull | reboot-bootloader | logcat | devices | kill-server | root | remount)
COMPREPLY=()
return 0
;;
reboot)
COMPREPLY=( $(compgen -W "bootloader recovery" -- $cur) )
return 0
;;
push)
COMPREPLY=( $(compgen -o default -o plusdirs -f -- $cur) )
return 0
;;
*)
local prev2="${COMP_WORDS[COMP_CWORD-2]}"
if [ "$prev2" == "push" ] || [ "$prev2" == "reboot" ];then
return 0
fi
;;
esac
COMPREPLY=( $(compgen -W "$opts" -- $cur) )
return 0
}
select_device()
{
# if env dev exist && find it, use it. || choose one of the devices.
if test $# -eq 0 -a -n "${ANDROID_SERIAL}"; then
local env_dev="${ANDROID_SERIAL}"
local devs=( `adb devices` )
local env_dev_status=0
# find the env device
for t in ${devs[@]}; do
if test "$t" = "$env_dev"; then
env_dev_status=1
break
fi
done
if test ${env_dev_status} -eq 1; then
echo ${env_dev}
return 0
fi
fi
local c=0 s=0 devs sel_dev
devs=( `adb devices` )
for (( c=0; c < ${#devs[@]}; c++ )); do
if test "device" = ${devs[c]}; then
t=$((c-1))
#echo ${devs[$t]}
sel_dev[$s]=${devs[$t]}
s=$((++s))
fi
done
#echo "${sel_dev}"
if test ${#sel_dev[*]} -ge 2; then
select var in ${sel_dev[*]}; do
break;
done
echo $var
return 0
else
echo ${sel_dev}
return 0
fi
echo
return 1
}
okadb()
{
if test $# -eq 1 -a "$1" = "devices"; then
adb $@
return 0
fi
dev="$(select_device)"
echo "select android device is $dev"
if test -n "$dev"; then
adb -s $dev $@
return 0
fi
adb devices
return 1
}
# add automatic completion for okadb
complete -F _okadb okadb
adbconnect()
{
# FIX ME
adb connect 2.2.2.$1
}
adbdisconnect()
{
dev="$(select_device)"
adb disconnect $dev
}
adbrestart()
{
adb kill-server
adb start-server
}
adblg()
{
dev="$(select_device)"
adb -s $dev logcat
}
adblgt()
{
dev="$(select_device)"
adb -s $dev logcat -v time
}
adblgth()
{
dev="$(select_device)"
adb -s $dev logcat -v threadtime
}
adbrename()
{
dev="$(select_device)"
name="123"
if test -n "$1"; then
name="$1"
fi
adb -s $dev shell "echo "$name" > /sys/class/android_usb/android0/iSerial"
adbrestart
adb devices
}
adbsetenv()
{
if test $# -eq 1 -a "$1" = "null"; then
export ANDROID_SERIAL=""
else
dev="$(select_device)"
export ANDROID_SERIAL="$dev"
fi
}
原文地址:http://blog.csdn.net/momo0853/article/details/46239763