小酋已经在《adb与monkey,轻松入门实践》中讲解了adb环境的安装配置及基本使用,今天来分享下adb的一些高级实用操作。让大家测试、分析Android应用更轻松。
获取管理员权限
adb root
查看系统盘符
adb shell df
查看Android系统版本
adb shell getprop ro.build.version.release
查看当前设备IP
adb shell netcfg
退出adb shell命令窗口(ctrl+c无法退出)
> exit //在命令窗口中键入“exit”回车即可
重启到 Recovery 模式
adb reboot recovery
重启到 Fastboot 模式
adb reboot bootloader
查看连接过的 WiFi 密码(需要 root权限)
adb shell
su
cat /data/misc/wifi/*.conf
华为su报错:/system/bin/sh: su: not found
解决办法:华为手机在出厂时官方加了锁,需要到官网上申请解锁,解锁后才能使用软件进行root
模拟按键
adb shell input keyevent [value]
部分常见按键相应值:
获取执行内存/CPU信息
> adb shell
> cat /proc/meminfo //获取执行内存信息
> cat /proc/cpuinfo //获取执行CPU信息
查看实时资源占用情况
adb shell top
获取电池状况
adb shell dumpsys battery
输入示例:
其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 39% 的电量。
按级别过滤日志
adb logcat TAG_NAME_1:PRIORITY_1
Android 的日志分为如下几个优先级(PRIORITY):
- V -- Verbose //最低,输出得最多
- D -- Debug //调试
- I -- Info //信息
- W -- Warning //警告
- E -- Error //错误
- F -- Fatal //致命级
- S -- Silent //最高,啥也不输出
按某级别过滤日志则会将该级别及以上的日志输出。
如,命令:
adb logcat *:W //会将 Warning、Error、Fatal 和 Silent 日志输出。
注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。
按 tag 和级别过滤日志
可以由多个
如,命令:
adb logcat ActivityManager:I MyApp:D
//表示输出 tag为 ActivityManager 的 Info 以上级别日志,输出 tag为 MyApp 的 Debug以上级别日志。
adb截图(非常实用的功能)
windows系统:
步骤①
adb shell screencap -p /sdcard/screen.png
//截图保存到sd卡
步骤②
adb pull /sdcard/screen.png [本地计算机路径]
//是将screen.png保存到电脑上;保存的路径默认为你使用adb命令的当前目录,也可以自定义存放的路径名。
注意:windows下,不能直接将截图保存在电脑中,大家不妨尝试下,直接保存在电脑中会怎么样?
linux系统直接保存到电脑中
> adb shell screencap -p | sed 's/\r$//' > screen.png
//仅限于在linux下使用;运行adb shell 将\n转换\r\n, 因此须要用sed删除多余的\r
使用adb进行屏幕录像
adb shell screenrecord /sdcard/record.mp4
//通过ctrl+c停止录制,用法与adb截图相同;默认录制时间和最长录制时间都是 180 秒
注意:华为机型可能基于安全考虑,无此命令,提示错误:/system/bin/sh: screenrecord: not found
无线连接(需借助 USB线)
除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接;虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后手机就可以在一定范围内摆脱 USB 连接线的限制。
使用步骤:
①将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一WiFi下。
②将设备与电脑通过 USB 线连接。(确保连接成功)
③让设备在 5555 端口监听 TCP/IP 连接:
> adb tcpip 5555
查看当前设备IP
> adb shell netcfg