ADB(Android Debug Bridge)是一个通用命令行工具, 也是Android软件测试开发工作者常用的调试工具,
ADB可以用来安装卸载软件、管理安卓系统软件、启动测试、抓取操作日志等。
同时因为安卓就是根据Linux开发的。所以adb shell下的常用命令与linux一样,比如ls/cd/mkdir等
0.显示adb的版本
adb version
1.显示系统中全部设备
adb devices
2.开启或关闭ADB服务
开启:adb start-server 关闭adb kill-server
3.连接设备
adb connect IP
如果是USB连接,直接会连接ADB,如果是想通过网络连接(有线或者无线),则需要在同一个局域网,通过IP连接。上面192.168.1.61替换成想要连接设备的IP即可。5555是模拟器的端口号
断开设备:adb disconnect IP
4.安装、卸载软件包
安装软件:adb install -r (APK路径)
-g 安装时获取所有需要的权限
-r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空
格。
卸载软件:adb uninstall (apk包名)
如果卸载 app 但需要保留数据和缓存文件:adb uninstall -k (apk包名)
5.获取软件包名
列出手机装的所有app的包名:
adb shell pm list packages
列出系统应用的所有包名:
adb shell pm list packages -s
列出除了系统应用的第三方应用包名:
adb shell pm list packages -3
显示当前打开的软件包名(如右图):
Windows:adb shell dumpsys window | findstr mCurrentFocus(需要打开目标软件)
Mac/Linux:adb shell dumpsys window | grep mCurrentFocus
6.清除应用数据与缓存
adb shell pm clear (apk包名)
7.启动、停止应用
启动:adb shell am start 包名/Activity名
停止:adb shell am force-stop (apk包名)
8.获取APP日志
格式:adb logcat >指定路径
adb logcat -t 5 #输出最近5行的日志数据
举例:
① adb logcat >C:\Users\18810\Desktop\1.txt
② 执行完后Ctrl+C结束日志获取
③ 查看获取的1.txt文档即可
9.获取APP启动时间
格式:adb shell am start -W 包名/activity名
常见参数:
-S:表示每次启动前先强行停止
-R:表示重复测试次数
常见的三个指标
Ø ThisTime: 当前activity的时间。
Ø TotalTime:应用的启动时间,包括创建进程、App初始化、Activity初始化到界面显示。
Ø WaitTime:前一个应用activity pause的时间+TotalTime
10.获取内存
格式:adb shell dumpsys meminfo <包名>
(1) Native/Dalvik 的 Heap 信息
如果发现这个值一直增长,则代表程序可能出现了内存泄漏(Out of memary)。
(2) Total 的 PSS 信息
这个值是应用真正占据的内存大小,通过这个信息,可以轻松判别手
机中哪些程序占内存比较大
11.查看CPU占用情况
1.格式:adb shell dumpsys cpuinfo <包名>
adb shell top -m 10 -s cpu(不建议)
(-m显示最大数量,-s 按指定行排序)
参数含义:
PID : 应用程序ID
S : 进程的状态(S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数)
#THR : 程序当前所用的线程数
VSS : 虚拟耗用内存(包含共享库占用的内存)
RSS : 实际使用物理内存(包含共享库占用的内存)
PCY : 前台(fg)和后台(bg)进程
UID : 用户身份ID
Name : 应用程序名称
12.获取APP使用流量
1.获取userId(返回数据为userId=)
adb shell dumpsys package 包名 | findstr userId
2.获取上行流量(返回数据单位bytes)
adb shell cat proc/uid_stat/userId/tcp_snd
3.获取下行流量(返回数据单位bytes)
adb shell cat proc/uid_stat/userId/tcp_rcv
13.Monkey测试
Monkey测试
语法:adb shell monkey -p 包名 -v(日志) 次数 >c:\日志.txt
说明:
-p 指定包名 (所有命令都在此包内执行,如不指定,则在整个系统内执行)
-v log详细程度(最高支持’-v -v -v’最详细)
–throttle 单步延时(每步操作间隔,单位毫秒)
–pct-touch 点击事件
举例:
不控制事件:adb shell monkey –p com.tpshop.malls –v –v 1000 >C:\Users\18810\Desktop\monkey.txt
控制事件:adb shell monkey –p com.tpshop.malls –throttle 100 –pct-touch 50 –pct-motion 50 –v –v
1000 >C:\Users\18810\Desktop\monkey.txt
monkey命令参数拓展
分类 | 参数 | 释义 |
---|---|---|
基础参数 | -v | 指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别。最高级别为-v -v -v |
-S | 指定monkey测试的序列 | |
-p | 指定一个或多个包(Package,即App) | |
– throttle | 指定用户操作(即事件)间的时延,单位是毫秒 | |
事件类型 | –pct-touch | 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置) |
–pct-motion | 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件 和一个up事件组成) | |
–pct-trackball | 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击) | |
–pct-syskeys | 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、 Start Call、End Call及音量控制键) | |
–pct-anyevent | 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的 设备按钮、等等 | |
调试选项 | –ignore–crashes | 应用程序崩溃 |
–ignore-timeouts | 无响应ANR | |
–igone-security- exceptions | 许可证书崩溃 | |
–kill-process-after-error | 发生错误停止运行并保持当前状态 | |
–montitor-native- crashes | 监视并报告Androids系统本地代码的崩溃事件 |
Monkey常用命令参数
14.文件传输
adb pull (文件路径) (想要pull的路径) #将 Android 设备上的文件或者文件夹复制到本地例如复制 test 下的 a.txt 文件到d 盘:adb pull test/a.txt d:
adb push (文件路径) (想要push的路径) #将电脑上的文件或者文件夹传到安卓设备例如将 test 下的 a.txt 文件传到安卓设备下的d 盘:adb push test/a.txt d:
15.查看app路径
adb shell pm path <package_name>
16.获取文件权限
Read-only file system表示只有可读权限。想要向push文件到/system中,需要获取/system文件的读写权限。于是,做如下操作输入命令:
1: adb root(前提是:手机root了)
2:adb remount,重新挂载系统分区(前提是:adb root)
3:adb shell “mount -o rw,remount /system”
执行完后,没什么反应就是成功了。再输入mount,就可以看到权限情况