1.adb 启动服务:
adb start-server 如果是没有启动的情况下输入会提示5037端口;若是开启状态,那么输入没有任何提示
2.adb 关闭服务:
adb kill-server 启动状态关闭后,无反应,不存会错误提示
特殊情况:
当手机连接电脑时,关闭adb服务会自动启动。
3.获取手机设备号
adb devices 展示手机设备号和手机名称
4.查看手机系统版本号
adb shell getprop ro.build.version.release
5.发送电脑文件到手机/sdcard目录
adb push 电脑目录地址 手机目录地址
6.手机文件拉取到电脑上
adb pull 手机目录地址 电脑目录地址
7.进入手机操作系统
adb shell
退出 exit
查看app使用过程中cpu和内存消耗:
top | grep app 包名
8.记录手机log信息
adb logcat
退出 ctrl+c
扩展:过滤在指定APP日志信息
Unix: adb logcat | grep app包名
windows: adb logcat | findstr app包名
adb logcat -v time > 文件名.txt 持续写入
日志解析:
V Verbose 最低级别,开发调试中的一些详情信息,仅在开发中使用,不可再发布产品中输出
D Debug 调试 调试信息
I info 提示性信息
W warning 警告
E Error 错误
PID 进程号
搜索闪退:
exception
force finish / force stopping
fatal/cause by
ANR 应用无响应
出现原因:
1.用户在主线程长时间被阻塞时提供处理交互,提高用户体验
2.Android 自身检测机制
搜索 traces to 查看文件写入的路径---只会记录最后一次ANR信息
如果想要查看所有的:
可以进入/data/system/dropbox 使用pull的方式将文件拉取出来-----真机没有权限
9.手机区分app: 通过包名和启动名进行区分 ----APP需要在启动的情况下才能获取
unix: adb shell dumpsys window windows | grep mFoc
window: adb shell dumpsys window windows | findstr mFoc
方式二:
安卓8以上:adb shell dumpsys activity | findstr "mResumedActivity"
10. 安装apk 到手机
adb install 路径/apk文件
或者直接找到apk在电脑上的存储位置,直接adb istall apk文件就可以
11. 卸载 apk
adb uninstall 包名
12.获取启动时间
adb shell am start -W 包名/启动名(包名+启动名)
totaltime:app自身启动时间
waittime:手机等待app启动时间
13 查看包名列表:
adb shell pm list packages -3 列出手机中安装的所有package -3 表示第三方应用
14 连接模拟器:adb connect 127.0.0.1:模拟器端口
adb disconnect 127.0.0.1:模拟器端口
15 查看当前安装包:
adb shell dumpsys package 包名 | findstr versionCode
页面管理: am activity manager
手机应用每一个页面都需要activity来完成调用
- adb shell dumpsys activity | findstr "mFocuse"
- 使用 aapt 来进行apk包解析
- 使用 adb shell monkey -p 包名 -v -v -v 1
adb -s 设备号 shell
手机没有自带驱动解决办法:adb 连接 Android 手机的两种方式 - 测试派
IOS 抓包工具 stream:
通用-》关于本机-》证书信任设置
使用adb 进行UI自动化脚本
1.获取包名:
adb shell pm list package -3
2.根据报名获取启动名
adb shell monkey -p 包名 -v -v -v 1
是从component= 到;end中间这段就是启动名
3.根据获取到的activity的名字,启动应用
adb shell am start -W -S 启动名
4.等待通过ping自己完成
ping 127.0.0.1 -n 1
互动型命令:
1.adb shell input text 输入内容
对于坐标可以使用开发者选项 中的指针位置
2.adb shell input tap x坐标 y坐标
3.键盘操作
adb shell input keyevent
关闭键盘 4
回车 66
退格 67
删除 112
4 滑动操作
adb shell input swipe 起点x 起点y 终点x 终点y 时长毫秒
长按使用 swipe短距离 长时间
APP 性能测试:
- adb shell dumpsys meminfo 包名
- 参数值:
- Pss Total:指占用了真实的物理内存的空间
- Heap Size:指占用总内存(Heap 堆)
- Dalvik Heap :指java中new出来的java堆空间(占用虚拟的内存空间)
- 查看单个应用最大内存限制,输入命令:getprop|grep heapgrowthlimit 得到结果该机型为192,Malvik process 超过就会抛OOM异常,会导致闪退
- Native Heap:指c 中malloc出来的堆空间,扩展:c++申请的内存为native process,java申请的内存:java process
- 关注点:
- 退出某个页面之后,内存是否有回落
- 进行某个操作之后,内存是否增长过快
- 参数值:
- CPU
- adb shell dumpsys cpuinfo | findstr 包名(Linux 用grep)
-
停止app的命令:
adb shell am force-stop packagename(杀死进程)
adb shell input keyevent 3 (置于后台)
-
这个过程是在用户(user)中花26%的时间,并在内核空间(kernel)花费43%的时间
-
- adb shell dumpsys cpuinfo | findstr 包名(Linux 用grep)
-
TPS ----不是很理解,后续补充
准备工作:进入手机设置-》开发者选项-》启动GPU调试层;开发者选项->监控-》华为呈现模式分析 在adb shell dumpsys gfxinfo 中- adb shell dumpsys gfxinfo 包名
- 参数--监控未在 gfxinfo
- Total frames rendered: 105 本次dump搜集了105帧的信息
Janky frames: 2 (1.90%) 105帧中有2帧的耗时超过了16ms,卡顿概率为1.9%
Number Missed Vsync: 0 垂直同步失败的帧
Number High input latency: 0 处理input时间超时的帧数
Number Slow UI thread: 2 因UI线程上的工作导致超时的帧数
Number Slow bitmap uploads: 0 因bitmap的加载耗时的帧数
Number Slow issue draw commands: 1 因绘制导致耗时的帧数
- Total frames rendered: 105 本次dump搜集了105帧的信息
- 参数--监控未在 gfxinfo
- adb shell dumpsys gfxinfo 包名