adb 称之为:Android 调试桥 (Android Debug Bridge )
是一种允许模拟器或已连接的 Android 设备
进行通信的命令行工具
,它可为各种设备操作提供便利,如安装和调试应用
,并提供对 Unix shell(
可用来在模拟器或连接的设备上运行各种命令
)的访问。
- 可以在Android SDK/platform-tools
中找到adb 工具或下载 ADB Kits
。
注: 有部分命令的支持情况可能与 Android 系统版本及定制
ROM
的实现有关。
ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备
。它的主要功能有:
在设备上运行Shell命令;
将本地APK软件安装至模拟器或Android设备;
管理设备或手机模拟器上的预定端口;
在设备或手机模拟器上复制或粘贴文件。
ADB 是一个客户端-服务器程序程序,包括三个组件:
发出 adb 命令从·命令行终端调用客户端
·。每个模拟器或设备实例
上作为后台进程运行。开发计算机上作为后台进程运行
。adb连接真机或者模拟器一共有以下3种方法
启动夜神模拟器
连接模拟器
adb connect 127.0.0.1:62001
查看连接的设备
List of devices 设备名称
attached 连接状态(devices设备正常连接、offline连接出现异常,设备无响应、unknown没有连接设备)
启用设备的开发者选项,启动调试功能
将手机与电脑通过 USB 线连接
确保 Android 手机的开发者选项
和 USB 调试模
式已开启
「设置」-「开发者选项」-「Android 调试」查看。开发者选项,点允许 usb 调试
,然后就可以连上电脑了
「设置」-「关于手机」连续点击「版本号」7
次。cmd框输入adb devices
命令查看设备连接情况
将 Android 设备与要运行 adb 的电脑连接到同一个局域网
同一个 WiFi
。将手机与电脑通过USB
线连接。确保连接成功,在cmd窗口输入 adb devices
看是否能列出该设备
让设备在 5555 端口
监听TCP/IP
连接
adb tcpip 5555
通过 IP 地址连接设备,在cmd窗口输入adb connect '手机ip地址'
注:连接不成功,检查以下问题
- 确保
网络和端口
都没有问题,使用的是原装数据线
- 请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行
adb connect
那一步- 通过
adb kill-server
重新启动 adb 然后从头再来一次试试
adb devices: 获取设备和设备的状态列表
adb devices -l 查看已连接的设备
adb get-serialno 设备号
adb get-state: 获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
adb connect [ip:port]: 远程连接设备(用于在同一网络下adb无线连接设备)
adb disconnect [ip:port]: 断开设备连接(用于在同一网络下adb无线连接设备)
adb reboot: 重启设备
注意:一般测试机可使用root权限。
Android版本9以上,不支持商用机使用root权限,但可以修改底层一些配置
登录设备 shell,该命令将登录设备的shell(内核),登录shell后,可以使用 cd,ls,rm 等Linux命令
基本命令
adb -d:如果同时连了usb,又开了模拟器,连接当前唯一通过usb连接的安卓设备
adb -e shell:指定当前连接此电脑的唯一的一个模拟器
adb -s <设备号> shell:当电脑插多台手机或模拟器时,指定一个设备号进行连接
exit:退出
杀死和重启adb服务
adb kill-server:杀死当前adb服务,如果连不上设备时,杀掉重启。(没事不要用它)
adb start-server:杀掉后重启
5037:adb默认端口,如果该端口被占用,可以指定一个端口号,如下命令↓
adb -p 6666 start-server
:任意指定一个 adb shell 的端口列出安装在设备上的应用
adb shell pm list packages 列出所有应用
adb shell pm list package -s 列出系统应用
adb shell pm list package -3 列出第三方的应用
adb shell pm list package -i 列出来源
db shell pm list package -f 列出包名和路径
adb shell pm list packages -d:显示禁用的包名
adb shell pm list packages -e:显示当前启用的包名
adb shell pm list packages -s:显示系统应用包名
adb shell pm list packages -3:显示已安装第三方的包名
adb shell pm list packages xxxx:加需要过滤的包名,如:xxx = taobao
安装
adb install <文件路径\apk>:将本地的apk软件安装到设备(手机)上。如手机外部安装需要密码,记得手机输入密码。
adb install -r <文件路径\apk>:覆盖安装
adb install -d <文件路径\apk>:允许降级覆盖安装
adb install -g <文件路径\apk>:授权/获取权限,安装软件时把所有权限都打开
卸载
adb uninstall <包名>:卸载该软件/app。
注意:安装时安装的是apk,卸载时是包名,可以通过 adb shell pm list packages 查看需要卸载的包名。
adb shell pm uninstall -k <包名>:虽然把此应用卸载,但仍保存此应用的数据和缓存
adb shell am force-stop <包名>:强制退出该应用/app
adb shell pm uninstall -k <包名>:虽然把此应用卸载,但仍保存此应用的数据和缓存
adb shell am force-stop <包名>:强制退出该应用/app
其他
adb shell pm path packagename 列出应用apk的位置
adb shell pm dump packagename 列出应用的详细信息
adb shell pm clear packagename 清除应用的缓存数据
adb push <本地路径\文件或文件夹> <手机端路径>:把本地(pc机)的文件或文件夹复制到设备(手机)
注意点1:pc机路径与Android机路径,
分隔
符是不同的。
注意点2:复制失败,大概率是无权限
。可先使用上面介绍过的两个命令:adb root;adb remount。在使用 adb push 命令
adb pull <手机端路径/文件或文件夹> <pc机路径>:把设备(手机)的文件或文件夹复制到本地。注意点同上
抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件。
adb logcat把 main log 和 system log打印出来,输出完成后阻塞终端,后面输出的log会及时更新到终端。
adb logcat -d :输出完日之后退出,不会阻塞
使用管道过滤日志
adb logcat | grep ActivityManager:输出包含指定字符串的行(Linux/mac)
adb logcat | findstr ActivityManager:输出包含指定字符串的行(windows)
输出日志到指定文件
adb logcat -f /sdcard/log.txt:将日志输出到手机的/sdcard/log.txt,注意是手机上。
adb logcat > E:/log.txt:将日志输出到终端所在电脑的 E:/log.txt 文件。
优先级
V — Verbose (lowest priority, 冗长的) 对应于Log.v(tag)系列函数
D — Debug (调试用) 对应于Log.d()系列函数
I — Info(线上用) 对应于Log.i()系列函数
W — Warning(警告日志) 对应于Log.w()系列函数
E — Error (发生错误) 对应于Log.e()系列函数
F — Fatal (What a Terrible Failure,引起程序崩溃)对应于Log.wtf()系列函数
S — Silent (highest priority, on which nothing is ever printed)
adb logcat -s ActivityManager [打印TAG为ActivityManager的日志]
adb logcat -s ActivityManager:I WindowManager:W [输出TAG为"ActivityManager"并且优先级大于等于"Info"和TAG为"WindowManager"并且优先级大于等于"Warn"的日志]
adb shell getprop ro.product.model 获取设备型号
adb shell getprop ro.build.version.release 获取设备 Android 系统版本
adb get-serialno 获取设备的序列号(设备号)
adb shell wm size 获取设备屏幕分辨率
adb shell cat /proc/meminfo:获取手机内存信息
adb shell df:获取手机存储信息
adb shell screencap -p /sdcard/screen.png 截图并保存到指定位置
adb pull /sdcard/mms.png <存放的路径>:将截图导出到本地
adb pull /sdcard/screenshot.png <存放的路径>:将截图导出到本地
adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app
adb shell dumpsys activity |find “mResumedActivity”:查看前台应用包名,必须先启动app,适用于Android 8.0以上
1.启动一个 Activity:adb shell am start -n [activityname]
2.等待页面启动完成:adb shell am start -W [activityname]
3.先停止应用再启动:adb shell am start -S [activityname]
4.结束应用: am force-stop [packagename]
监控应用数据:
adb shell dumpsys cpuinfo cpu信息
adb shell dumpsys meminfo 内存信息
adb shell dumpsys power 电源信息
adb shell dumpsys battery 电池信息
adb shell dumpsys wifi wifi信息
adb shell dumpsys notification 通知信息
adb shell dumpsys activity 获取页面信息
adb shell dumpsys activity services [package-name] 查看正在运行的服务
1.什么是monkey
2.常用命令
随机应用-随机操作
adb shell monkey 100:对该设备下,随机应用,执行100次的随机操作。(伪随机)
-p <测试的包名列表>
此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
1.不指定包:adb shell monkey 50
2.指定一个包执行50次:adb shell monkey -p 包名 50
3.指定多个包执行50次:adb shell monkey -p 包名1 -p 包名2 50
指定应用-随机操作
adb shell monkey -p <包名> 100:指定应用(包)随机操作100次。这里演示的包名为:com.dfcyc.app.dffs
指定应用-随机操作并打印日志到指定路径
adb shell monkey -p <包名> -v -v -v 100 >D:\log.txt:指定应用随机操作100次并打印日志到指定路径/文件
adb shell monkey -p <包名> -v -v -v 100 不输出到指定文件
-v 显示日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度)。总共分3个级别,分别对应的参数:
1)Level 0 : adb shell monkey -p 包名 -v 100 //默认级别,仅提供启动提示、测试完成和最终结果等少量信息
2)Level 1 : adb shell monkey -p 包名 -v -v 100 //提供较为详细的日志,包括每个发送到Activity的事件信息
3)Level 2 : adb shell monkey -p 包名 -v -v -v 100 //最详细的日志,包括了测试中选中/未选中的Activity信息
它用于模拟用户通过触摸屏、按键和滑动等方式与设备进行交互。
adb shell input:
text [输入文本]
keyevent [输入事件[
tap [点击[
swipe [滑动<坐标><坐标为原地,则是长按>[