當前PC連着多個安卓設備時,當超出了 adb 所支持的設備數,步驟以下:shell
error: more than one device/emulator adb: error: failed to get feature set: more than one device/emulator - waiting for device - error: more than one device/emulator
#adb 快捷命令 function adbConnect(){ echo "Your connect is 192.168.$1" # 這個 $1 必需要參考底下命令的下達 adb connect 192.168.$1 } function adbDisconnect(){ adb disconnect } function adbShell(){ adb shell } function devices(){ adb devices } # 獲取安卓設備數量 function getAdbDevicesCount(){ no_dev=2 #沒有設備的總行數 第一行: List of devices attached 第二行 空 line="`adb devices | wc -l`" # echo "$line" echo $(($line-$no_dev)) } #獲取自定義格式設備名稱 參數1: adb devices 設備ID index function getFmtDeviceName(){ if [ -n "$1" ]; then line=$1 let "line++" #跳過1行 deviceId="`adb devices | sed -n "${line}p" | awk '{printf $1"\n"}' `" # name="`adb devices | sed -n "2p;${line}p" | awk '{printf NR ". " $1"\n"}' `" #簡單列出設備ID manufacturer="`adb -s $deviceId shell getprop ro.product.manufacturer`" model="`adb -s $deviceId shell getprop ro.product.model`" version="`adb -s $deviceId shell getprop ro.build.version.release`" sdk="`adb -s $deviceId shell getprop ro.build.version.sdk`" name="${manufacturer} ${model} Android ${version} API ${sdk} Serial: ${deviceId} " # 去除某些設備後面攜帶回車符 name=`echo ${name} | tr -d '\r'` echo ${name} else echo "requires an argument" fi } # 列出全部設備 function listFmtDevices(){ count=`getAdbDevicesCount` index=1 while(( $index<=count )) do name=`getFmtDeviceName ${index}` echo "${index}. ${name} " let "index++" done } # 獲取設備ID 參數1: adb devices 設備ID index function getFmtDeviceId(){ if [ -n "$1" ]; then line=$1 let "line++" #跳過1行 deviceId="`adb devices | sed -n "${line}p" | awk '{printf $1"\n"}' `" # 去除某些設備後面攜帶回車符 deviceId=`echo ${deviceId} | tr -d '\r'` echo ${deviceId} else echo "requires an argument" fi } # 安裝apk function apk(){ if [ -n "$1" ]; then count=`getAdbDevicesCount` one_dev=1 if [ $count -eq $one_dev ] then # 單設備 name=`getFmtDeviceName 1` echo "install apk to devices: ${name}" adb install -r $1 elif [ $count -gt $one_dev ] then # 多設備 if [ -n "$2" ]; then # 帶設備index index=$2 deviceId=`getFmtDeviceId ${index}` name=`getFmtDeviceName ${index}` echo "install apk to devices: $name" adb -s $deviceId install -r $1 else # 帶apk文件路徑 echo "install apk to which devices?" listFmtDevices read -p "Enter: " index apk $1 $index fi else echo "no devices" fi else echo "apk requires an apkPath argument" fi } # 卸載apk function uapk(){ if [ -n "$1" ]; then count=`getAdbDevicesCount` one_dev=1 if [ $count -eq $one_dev ] then # 單設備 name=`getFmtDeviceName 1` echo "uninstall apk on $name" adb uninstall $1 elif [ $count -gt $one_dev ] then # 多設備 if [ -n "$2" ]; then # 帶設備index index=$2 deviceId=`getFmtDeviceId ${index}` name=`getFmtDeviceName ${index}` echo "uninstall apk on devices: $name" adb -s $deviceId uninstall $1 else # 帶apk文件路徑 echo "uninstall apk on which devices?" listFmtDevices read -p "Enter: " index uapk $1 $index fi else echo "no devices" fi else echo "uapk requires an pkg argument" fi } # 進入adb shell 環境 function as(){ count=`getAdbDevicesCount` one_dev=1 if [ $count -eq $one_dev ] then # 單設備 name=`getFmtDeviceName 1` echo "${name} Last login: `date`" adb shell elif [ $count -gt $one_dev ] then # 多設備 if [ -n "$1" ]; then # 帶設備index index=$1 deviceId=`getFmtDeviceId ${index}` name=`getFmtDeviceName ${index}` echo "${name} Last login: `date`" adb -s $deviceId shell else # 不帶設備index echo "enter shell which devices?" listFmtDevices read -p "Enter: " index as $index fi else echo "no devices" fi }