美文网首页安卓集中营
Shell下的adb 快捷命令

Shell下的adb 快捷命令

作者: 任半生嚣狂 | 来源:发表于2019-06-11 00:47 被阅读1次

前言

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

  • 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}  ID ${deviceId}"
    # 去除某些设备后面携带回车符
    name=`echo ${name} | tr -d '\r'`
    echo ${name}
  else
    echo "requires an argument"
  fi
}

# 获取设备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?"
        index=1
        while(( $index<=count ))
        do
          name=`getFmtDeviceName ${index}`
          echo "${index}. ${name} "
          let "index++"
        done
        read 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?"
        index=1
        while(( $index<=count ))
        do
          name=`getFmtDeviceName ${index}`
          echo "${index}. ${name} "
          let "index++"
        done
        read 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?"
      index=1
      while(( $index<=count ))
      do
        name=`getFmtDeviceName ${index}`
        echo "${index}. ${name} "
        let "index++"
      done
      read index
      as $index
    fi
  else
    echo "no devices"
  fi
}

相关文章

  • Shell下的adb 快捷命令

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

  • adb shell logcat 命令

    adb shell logcat 命令 Tags: adb_shell adb shell logcat命令映射为...

  • adb命令大全

    adb命令与adb shell命令的区别? adb命令是PC端adb程序自带的命令 adb shell 命令是调用...

  • adb与adb shell命令使用

    adb命令与adb shell命令的区别?adb命令是PC端adb程序自带的命令adb shell 命令是调用An...

  • ADB常用命令集合

    基础命令 USB设备命令 文件传输命令 SHELL命令 adb shell pm命令 adb shell am命令...

  • adb shell 命令相关功能

    adb shell 命令相关功能 Tags: adb_shell adb shell wm 命令获取屏幕相关信息 ...

  • ADB常用命令总结

    总结一下常用的adb命令和adb shell 命令,adb 命令是 adb 这个程序自带的一些命令,而 adb s...

  • adb shell dumpsys 命令

    adb shell dumpsys 命令 Tags: adb_shell dumpsys adb shell 进入...

  • Android-adb-常用命令

    一.介绍 二.adb命令 三.adb shell命令(输入adb shell进入Linux命令环境,以下命令省略a...

  • monkey稳定性

    adb shell的一些命令: adb devices查看连上的设备 adb shell进入到设备shell命令 ...

网友评论

    本文标题:Shell下的adb 快捷命令

    本文链接:https://www.haomeiwen.com/subject/ehbxfctx.html