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服务
常见问题:
- 使用
adb devices
命令的时候查找不到设备列表。这个时候可以尝试关闭并重启adb服务然后看下是否可以正常重启 - 启动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
说明:
-
127.0.0.1:7555
,这个是设备序列号。当电脑连接多个手机设备时,使用 adb -s "序列号" 命令指定设备进行操作,比如:
adb -s "127.0.0.1:7555" shell ls # 列出指定序列号设备当前目录下的文件列表
-
device
, 这个是设备的连接状态,连接状态总共有以下三种
device: 设备现已连接到 adb 服务器
offline: 设备未连接到 adb 或没有响应
no device:未连接任何设备
使用adb devices无法列出设备的几种情况:
- 可能是手机未开启设置。查看手机开发者模式中[允许usb调试]是否已打开。默认情况下手机是不会默认开启该设置的。需要手动开启
- 如果使用的是模拟器,可能是端口问题。可以使用以下命令:
adb connect 127.0.0.1:7555 # 网易mumu模拟器端口7555
adb connect 127.0.0.1:21503 # 逍遥模拟器端口21503
- 如果使用的是模拟器,也可能是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 #删除应用
注意:
- 这里的包名指的是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键
这里要注意:
- 要使用
adb shell input tap x, y
需要先知道如何获取到某一个点的坐标,获取坐标的方式有很多,可以使用uiautomatorviewer
, 但是还要设置环境变量,下载包等,个人觉得比较麻烦,建议打开手机 [开发者选项] 中的 [指针位置]。这样在你手动点击的时候就可以看到你点击位置的绝对坐标了 -
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还有很多其他的强大功能。想要了解的朋友可以自行百度。但是看到这里并且全都掌握,基本上也就够用了。入门之后再去深入学习和了解就变得很容易了。
网友评论