前言
不管是学习Android手机端还是车机端,ADB学习是你必学必会的技能之一。
一、什么是adb?
- adb(Android Debug Bridge安卓调试桥)是用来链接安卓手机和PC端的桥梁,要有adb作为两者之间的维系,才能让用户在电脑上对手机进行全面操作。
- 安卓的初衷是用db这样的工具来协助开发人员在开发和拷贝安卓应用的过程中,更好的调试APK,因此db具有安装和卸载、拷贝推送文件,查看设备硬件信息、查看应用程序占用资源这些功能!
- Android系统的APK,apk是(Android application PacKage)应用程序包的简写
- IOS系统软件的后缀名是IPA。IPA是Apple程序应用文件iPhoneApplication的缩写
二、adb命令
查看版本
adb version
查看性能CPU信息
adb shell "dumpsys cpuinfo"
查看设备信号
adb shell getprop ro.product.model
adb服务启动/停止
启动adb server命令:
adb start-server
停止adb server命令:
adb kill-server
安装软件
adb install安装apk文件路径
查看第三方软件
adb shell pm list packages -3
卸载软件
adb uninstall包名
鼠标右击复制包名,黏贴
adb上传
首先现在网页保存一张图片
adb push本地文件路径模拟器路径从本地上传文件到模拟器
adb push C:\Users\1\Desktop\dog.png /sdcard/pictures/Screenshots
adb下载
首先在夜神模以器截屏
adb pull模拟器文件路径本地路径从模拟器下载文件到本地
adb pull /sdcard/pictures/Screenshots/Screenshot_20210923-174542.png
C:\Users\1\Desktop
查看连接的Android设备
adb devices
操作单台或者多台设备adbs设备号/i地址或者端口号
指定目标设备命令
如果只有一个设备/模拟器连接时,则命令为:adb<command:>
如果有多个设备/模拟器连接时,则需要区分指定目标设备命令,命令为:
adb [-d -e |-s <serialNumber>]<command>
在多个设备/模拟器连接的情况下常用的是-s<serialNumber>参数,其中serialNumber可以通过adb devices命令来获取。比如:
adb devices
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
这里的cf264b8f、emulator-5554、10.129.164.6:5555就是serialNumber。
指定设备屏幕分辨率
比如设备为:cf264b8f,则命令为:adb-scf264b8 f shell wm size
指定设备安装应用
比如设备为:10.129.164.6:5555,则命令为:adb-s10.129.164.6:5555
查看app日志
adb logcat
adb shell logcat
打印出当前移动设备运行日志,夜神模拟器点击任何地方,都会实时打印,cr+C退出
列出软件安装包
可以列出所有的应用包名,默认包括系统自带应用和第三方安装应用
adb shell pm list packages
在adb shel‖pm list packages的基础上可以加一些参数进行过滤查看不同的列表,支持的
过滤参数如下:
参数显示无所有应用
-f显示应用关联的apk文件
-d只显示disabled的应用
-e只显示enabled的应用
-s只显示系统应用
-3只显示第三方应用
-i显示应用的installer
-u包含已卸载应用
过滤关键词
adb logcat|findstr 关键字 adb shell logcat findstr 关键字
findstr是windows系统中的过滤符
★★进入虚拟机内核模式 ★★
手机测试的时候,有时候需要截图。有时候还需要录屏。截图文件和录屏文件默认存放在手机中。
使用adb shell命令可以直接到达手机中。
adb shell
ls
pwd
cd
等基本的Linux命令(因为Android系统的内核是Linux)
如果要退出exit
adb模拟操作
电源键
adb shell input keyevent 26
adb shell的功能很强大,可以使用很多功能,今天我们说下通过控制按键输入:adb shell input keyevent xx
具体数值x如下
KEYCODE_CALL进入拨号盘5
KEYCODE ENDCALL挂机建6
KEYCODE_HOME按键Home3
KEYCODE MENU菜单键82
KEYCODE_BACK返回键4
KEYCODE_SEARCH搜索键84
KEYCODE_CAMERA拍照键27
KEYCODE_FOCUS拍照对焦键80
KEYCODE_POWER电源键26
KEYCODE_NOTIFICATION通知键83
KEYCODE_MUTE话筒静音键91
KEYCODE_VOLUME_MUTE扬声器静音键164
KEYCODE_VOLUME_UP音量增加键24
KEYCODE_VOLUME_DOWN音量减小键25控制键
KEYCODE_ENTER回车键66
KEYCODE_ESCAPE ESC 111
KEYCODE_DPAD_CENTER导航键确定键23
KEYCODE_DPAD_UP导航键向上19
KEYCODE_DPAD_DOWN导航键向下20
KEYCODE_DPAD_LEFT导航键向左21
KEYCODE_DPAD_RIGHT导航键向右22
KEYCODE_MOVE_HOME光标移动到开始键122
KEYCODE._MOVE_END光标移动到末尾键123
KEYCODE_PAGE_UP向上翻页键92
KEYCODE._PAGE_DOWN向下翻页键93
KEYCODE_DEL退格键67
KEYCODE._FORWARD_.DEL删除键112
KEYCODE_INSERT插入键124
KEYCODE_TAB Tabs键61
KEYCODE_NUM_LOCK小键盘锁143
KEYCODE_CAPS_LOCK大写锁定键115
KEYCODE_BREAK Break/Pause 121
KEYCODE._SCROLL_LOCK滚动锁定键116
KEYCODE_ZOOM_IN放大键168
KEYCODE_ZOOM_OUT缩小键169利用命令"adb shell input keyevent<键值>"可以实现
自动化。例如"adb shell input keyevent3"就可以按下Home键。]执行返回:
adb shel input keyevent4
执行灭屏亮屏:adb shell input keyevent26执行解锁屏幕:adb shell input keyevent 82
三、稳定性--monkey命令
monkey主要是用来做安卓客户端稳定性测试,monkeyi可以随机生成模似出一系列伪事件流。
手机客户端最严重的bug?
程序崩溃(crash)或者程序未响应(ANR)
通过monkey可以生成伪随机事件流,来检查手机客户端是否有这样的问题。
运行指定app的专项测试
adb shell monkey-p com.autonavi.amapauto 3000
adb shell monkey-p com.autonavi.amapauto 3000
指定运行微博执行3000个事件,随机事件包含(旋转屏幕、音量、缩放照片、点击、滑动屏幕等等)
运行日志
adb shell monkey -p com.autonavi.amapauto -vv 3000
W显示详细的运行日志
指定运行速度
adb shell monkey--throttle 500 -p com.autonavi.amapauto -vv 300
-throttle500事件延迟时间为500毫秒
500毫秒=0.5秒
保存日志到文件
adb shell monkey -p com.sina.weibo-w1000>电脑桌面文件路径
注:
运行过程中出现应用闪退或者应用无响应。
日志中会有对应的报错信息。只需要将报错信息发给开发即可。
-s 种子值
在上次运行的时候,应用程序崩溃,开发修复之后给你一个新版本,对新版本进行复测。
因为每次执行monkey的时候事件都是随机的,不能将上次的操作浮现。
通过查看上一次的运行日志。
上一次执行的时候,在日志中保存的有seed值。
本次运行跟上次使用同一个种子值即可。
adb shell monkey -s 1664295788023-p com.autonavi.amapauto -vv 300
D:\data\monkeytest3.log
截图
adb shell screencap /sdcard/screen.png
录制视频
adb shell screenrecord /sdcard/demo.mp4
adb远程连接
先有线设备连接然后使用
adb tcpip5555打开远程连接默认端口
建立远程连接ip为设备的局域网地址ip
adb connect ip
断开远程连接
adb disconnect ip