安卓猿的ADB騷操做

前言

當前PC連着多個安卓設備時,當超出了 adb 所支持的設備數,步驟以下:shell

  • adb devices 列出你當前的設備列表,而後拷貝你要安裝的設備Device Id; 使用 adb -s deviceId
  • install .... 來進行 APK 安裝
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
}
相關文章
相關標籤/搜索