美文网首页
adb 测试同学常用命令详解

adb 测试同学常用命令详解

作者: 许忠慧 | 来源:发表于2020-05-26 10:21 被阅读0次

adb是谷歌官方提供的AndroidSDk中的一个命令行包,主要用于电脑连接手机使用。连接后可以使用linux命令对android手机进行操作(android内核系统本身就是以linux为基础。许多linux上的命令均可使用)

安装就不说了,自行百度AndroidSDK下载即可,这里记录下环境变量配置:
1.新增ANDROID_HOME

value = D:\android-sdk

2.在系统环境变量path最前面增加:

value = %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

一、启动、关闭服务

adb start-server    # 启动adb服务
adb kill-server      # 关闭adb服务

常见问题:

  1. 使用 adb devices 命令的时候查找不到设备列表。这个时候可以尝试关闭并重启adb服务然后看下是否可以正常重启
  2. 启动adb服务的时候可能会出现端口号被占用的情况(默认端口:5037):
# 查看哪个进程占用了5037端口
C:\Users\xuzhh>netstat -aon|findstr 5037
TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       21776
TCP    127.0.0.1:5037         127.0.0.1:51628        TIME_WAIT       0

# 通过进程PID查看进程(我的端口没被占用,只是举例说明)
C:\Users\xuzhh>tasklist /fi "PID eq 21776"
映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
adb.exe                      21776 Console                    1      9,352 K

# 杀进程(也可以在任务管理器界面根据pid进行杀进程操作)
C:\Users\xuzhh>taskkill /pid 21776 /f

二、查看设备列表

# 查看设备列表
C:\Users\xuzhh>adb devices
List of devices attached
127.0.0.1:7555  device 

# 查看设备列表(详情)
C:\Users\xuzhh>adb devices -l
List of devices attached
127.0.0.1:7555         device product:cancro model:MuMu device:x86 transport_id:1

说明:

  1. 127.0.0.1:7555 ,这个是设备序列号。当电脑连接多个手机设备时,使用 adb -s "序列号" 命令指定设备进行操作,比如:
adb -s  "127.0.0.1:7555" shell ls    # 列出指定序列号设备当前目录下的文件列表
  1. device, 这个是设备的连接状态,连接状态总共有以下三种

device: 设备现已连接到 adb 服务器
offline: 设备未连接到 adb 或没有响应
no device:未连接任何设备

使用adb devices无法列出设备的几种情况:

  1. 可能是手机未开启设置。查看手机开发者模式中[允许usb调试]是否已打开。默认情况下手机是不会默认开启该设置的。需要手动开启
  2. 如果使用的是模拟器,可能是端口问题。可以使用以下命令:
adb connect 127.0.0.1:7555      # 网易mumu模拟器端口7555
adb connect 127.0.0.1:21503    # 逍遥模拟器端口21503
  1. 如果使用的是模拟器,也可能是adb版本跟本地adb版本不一致出现的问题。尝试下将本地androidSDK包中的adb.exe文件复制粘贴到模拟器对应的adb.exe文件中,替换掉模拟器对应的adb.exe文件( 比如网易的模拟器交server_adb.exe,则复制过去之后还要改成一样的名字)

三、adb 交互模式(adb shell

通过使用adb shell 可以进入交互模式。在交互模式中可以使用部分linux命令,例如:

C:\Users\xuzhh>adb shell    #进入交互模式
root@MuMu:/ # ls -al | grep sdcard      # 查看sdcard的详细属性
lrwxrwxrwx root     root              2020-05-25 11:46 sdcard -> storage/self/primary
root@MuMu:/ # exit    #退出交互模式

或者可以使用adb shell后面跟命令的方式来直接执行命令并返回结果,此时,是未进入交互模式的,例如:

C:\Users\xuzhh>adb shell "ls -al | grep sdcard"
lrwxrwxrwx root     root              2020-05-25 11:46 sdcard -> storage/self/primary
C:\Users\xuzhh>

如果电脑同时连接多个手机设备,注意用adb -s "序列号" shell来执行,类似adb -s "序列号" devices的用法

四、log获取

连接adb时候比较常用的操作就是获取log

adb logcat -c                   # 清除手机中的缓存日志
adb logcat >e:/logcat.txt       # 抓取log并保存到 e:/logcat.txt 中
adb logcat *:W >e:/logcat.txt   # 抓log(只抓W级以上的log)

五、截图、录屏

adb shell screencap -p /data/local/tmp/test.png     #截图(保存为png格式)
adb shell screenrecord /data/local/tmp/test.mp4         #录屏
adb shell screenrecord --size 848*480 /sdcard/test.mp4      #设定视频分辨率,录屏
adb shell screencap -p /data/local/tmp/test.png     #

六、安装、启动应用

adb install xxxx.apk    #安装应用
adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}       #启动应用
adb shell am force-stop packageName                                      #停止应用
adb uninstall packageName    #删除应用

注意:

  1. 这里的包名指的是AndroidMinifect清单文件中的包名。可以使用aapt dump badging xxxx.apk | findstr "name"进行查看。aapt是AndroidSDK的中的另一个工具,将aapt.exe放到C盘Windows目录下即可直接在cmd下进行使用,无需环境变量配置

七、打开、关闭WIFI(需root)

adb root    # 先要让adb获取root权限
adb shell svc wifi enable  # 打开wifi
adb shell svc wifi disable # 关闭 wifi

使用场景:测试断线重连操作的时候可以使用
关于root就不多说了,有些手机厂商是自带开发者模块或者系统的。需要自行到品牌手机官网开发者论坛查看一下。
个人比较习惯用模拟器,大部分模拟器都是自带root开关的,推荐 mumu、逍遥。用了挺久,挺好用的

八、简单自动化

adb shell input tap x y                             #模拟点击坐标
adb shell input text "xxx"                              #模拟输入
adb shell input swipe x1 y1 x2 y2 [duration(ms)]            #模拟在屏幕上进行滑动;android4.4支持设置步长
adb shell input keyevent num                                  #点击按键
# input keyevent 3    // Home
# input keyevent 4    // Back
# input keyevent 19  //Up
# input keyevent 20  //Down
# input keyevent 21  //Left
# input keyevent 22  //Right
# input keyevent 23  //Select/Ok
# input keyevent 24  //Volume+
# input keyevent 25  // Volume-
# input keyevent 82  // Menu 菜单
# input keyevent --longpress 3                      #长按home键

这里要注意:

  1. 要使用adb shell input tap x, y需要先知道如何获取到某一个点的坐标,获取坐标的方式有很多,可以使用uiautomatorviewer, 但是还要设置环境变量,下载包等,个人觉得比较麻烦,建议打开手机 [开发者选项] 中的 [指针位置]。这样在你手动点击的时候就可以看到你点击位置的绝对坐标了
  2. adb shell input text命令是无法输入中文的。如果要输入中文的话需要一些辅助方式。这里推荐ADBKeyBoard.apk点此进行下载
    使用步骤:
    1.下载apk并安装至手机设备中
    2.打开 [设置] - [语言和输入法] - [默认输入法] ,先关掉 [硬件-物理键盘] 这个选项(模拟器上一般默认是开启的)
    3.将ADBKeyBoard输入法设置为默认输入法,这里可以直接用adb命令设置。也可以手工去设置ADBKeyBoard输入法为默认输入法。命令行设置如下:
# 通过adb切换到ADBKeyBoard输入法 :
adb shell ime set com.android.adbkeyboard/.AdbIME
# 切换回原虚拟键盘(如切到swype输入法)
adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME

4.然后使用如下命令进行中文输入

adb shell am broadcast -a ADB_INPUT_TEXT --es msg '测试一下中文输入'

至此,adb简单使用就介绍到这里。常规测试过程中可能会用到的命令基本这里都有了。其实adb还有很多其他的强大功能。想要了解的朋友可以自行百度。但是看到这里并且全都掌握,基本上也就够用了。入门之后再去深入学习和了解就变得很容易了。

相关文章

网友评论

      本文标题:adb 测试同学常用命令详解

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