前言

当前PC连着多个安卓设备时,当超出了 adb 所支持的设备数,步骤如下:

  • adb devices 列出你当前的设备列表,然后拷贝你要安装的设备Device Id; 使用 adb -s deviceId
  • install .... 来进行 APK 安装
error: more than one device/emulatoradb: 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 indexfunction 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 indexfunction 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}# 安装apkfunction 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}# 卸载apkfunction 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}