18 KiB
18 KiB
ADB 常用命令指南
目录
- 设备连接管理
- 应用安装与卸载
- 文件传输
- 日志查看
- 系统操作
- Activity Manager (am) 命令
- Package Manager (pm) 命令
- Input 输入命令
- 屏幕操作
- 系统信息查询
- 网络操作
- Monkey 压力测试
- 高级调试技巧
设备连接管理
查看设备列表
adb devices
- 显示所有已连接的Android设备
- 多行显示表示连接多个设备
- 每行前面的字符串表示设备的SN号(序列号)
获取设备状态
adb get-state
- 返回设备状态:
device(已连接)、offline(离线)、unknown(未知)
启动/关闭 ADB 服务
adb start-server # 启动adb服务
adb kill-server # 关闭adb服务
连接/断开设备
adb connect <设备IP地址> # 通过WiFi连接设备(需在同一局域网)
adb disconnect # 断开当前设备连接
adb disconnect <设备IP地址> # 断开指定设备
WiFi 连接设置
# 1. 使用USB连接设备
adb tcpip 5555
# 2. 断开USB,使用WiFi连接
adb connect <设备IP地址>:5555
# 如果WiFi连接失败,在设备上执行:
adb shell setprop service.adb.tcp.port 5555
adb shell stop adbd
adb shell start adbd
应用安装与卸载
安装应用
adb install <apk文件路径> # 安装APK
adb install -r <apk文件路径> # 重新安装(覆盖已安装版本)
adb install -s <设备SN> <apk路径> # 指定设备安装(多设备时)
adb install -d <apk文件路径> # 允许降级安装
adb install -g <apk文件路径> # 授予所有运行时权限
示例:
adb install D:/hello.apk
# 注意:cmd路径不要包含中文,否则可能安装失败
卸载应用
adb uninstall <包名> # 卸载应用
adb uninstall -k <包名> # 卸载应用但保留数据和缓存
示例:
adb uninstall com.example.app
adb uninstall -k com.example.app
文件传输
推送文件到设备
adb push <本地文件路径> <设备路径>
示例:
adb push D:/hello.apk /sdcard/hello.apk
adb push D:/test.txt /sdcard/Download/test.txt
从设备拉取文件
adb pull <设备路径> <本地保存路径>
示例:
adb pull /sdcard/screen.png D:/screenshots/
adb pull /sdcard/Download/file.txt ./
日志查看
基本日志查看
adb logcat # 查看所有日志
adb logcat -c # 清空日志缓冲区
adb logcat -v time # 显示时间戳
adb logcat -v threadtime # 显示线程和时间
adb logcat -v long # 详细格式
过滤日志
# 按标签过滤
adb logcat -s TAG1 TAG2
# 按优先级过滤(V/D/I/W/E/F/S)
adb logcat *:E # 只显示错误级别
adb logcat *:W # 显示警告及以上
# 组合过滤
adb logcat -s TAG:*:E # 特定标签的错误日志
# 使用管道过滤(Windows)
adb logcat | findstr "关键字"
adb logcat | findstr /i "error"
# 使用管道过滤(Linux/Mac)
adb logcat | grep "关键字"
adb logcat | grep -i "error"
保存日志到文件
adb logcat > log.txt # 保存所有日志
adb logcat -v time > log.txt # 保存带时间戳的日志
adb logcat -s TAG:*:E > error_log.txt # 保存过滤后的日志
adb logcat -d > log.txt # 一次性获取当前日志并退出
按时间过滤日志
adb logcat -t 100 # 显示最后100行
adb logcat -t '01-01 12:00:00.000' # 显示指定时间之后的日志
系统操作
重启设备
adb reboot # 普通重启
adb reboot recovery # 重启到Recovery模式
adb reboot bootloader # 重启到Bootloader模式
adb reboot -p # 关机(部分设备支持)
重新挂载系统分区
adb remount # 重新挂载系统分区为可写(需要root)
adb root # 以root权限重启adb
进入Shell
adb shell # 进入设备Shell
adb shell <命令> # 直接执行Shell命令
示例:
adb shell ls /sdcard
adb shell cat /proc/cpuinfo
Activity Manager (am) 命令
启动Activity
# 基本启动
adb shell am start -n <包名>/<Activity类名>
# 先停止再启动
adb shell am start -S -n <包名>/<Activity类名>
# 等待启动完成
adb shell am start -W -n <包名>/<Activity类名>
# 启动并传递数据
adb shell am start -a <action> -d <data> -t <type>
示例:
# 启动主Activity
adb shell am start -n com.example.app/.MainActivity
# 拨打电话
adb shell am start -a android.intent.action.CALL -d tel:10086
# 打开网页
adb shell am start -a android.intent.action.VIEW -d "https://www.baidu.com"
# 打开应用市场
adb shell am start -a android.intent.action.VIEW -d "market://details?id=com.example.app"
启动Service
adb shell am startservice -n <包名>/<Service类名>
发送广播
adb shell am broadcast -a <action>
示例:
# 发送开机广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
监控Activity启动
adb shell am monitor # 监控应用启动和崩溃
强制停止应用
adb shell am force-stop <包名>
获取当前Activity
# Windows
adb shell dumpsys activity | findstr "mFocus"
# Linux/Mac
adb shell dumpsys activity | grep "mFocus"
# 更精确的方式
adb shell dumpsys window windows | findstr "mCurrentFocus"
获取Activity栈信息
adb shell dumpsys activity activities
Package Manager (pm) 命令
列出应用
adb shell pm list packages # 列出所有应用包名
adb shell pm list packages -3 # 只列出第三方应用
adb shell pm list packages -s # 只列出系统应用
adb shell pm list packages -u # 列出已卸载的应用
adb shell pm list packages -f # 显示应用关联的apk文件
adb shell pm list packages -i # 显示应用的安装器
应用信息查询
adb shell pm dump <包名> # 显示应用详细信息
adb shell pm path <包名> # 显示应用APK路径
adb shell pm list packages -f <包名> # 显示应用APK路径(另一种方式)
示例:
adb shell pm dump com.example.app
adb shell pm path com.example.app
# 输出:package:/data/app/com.example.app-xxx/base.apk
安装/卸载(设备端)
adb shell pm install <apk路径> # 在设备上安装APK
adb shell pm uninstall <包名> # 在设备上卸载应用
清除应用数据
adb shell pm clear <包名> # 清除应用数据和缓存
启用/禁用应用
adb shell pm disable-user <包名> # 禁用应用(需要root)
adb shell pm enable <包名> # 启用应用(需要root)
示例:
adb shell pm disable-user com.android.launcher3
adb shell pm enable com.android.launcher3
Input 输入命令
文本输入
adb shell input text "文本内容"
示例:
adb shell input text "aimomo"
adb shell input text "www.baidu.com"
注意: 不支持中文输入,空格需要用 %s 表示
点击操作
adb shell input tap <x坐标> <y坐标>
示例:
adb shell input tap 300 700
按键事件
adb shell input keyevent <键码>
常用键码:
adb shell input keyevent KEYCODE_HOME # Home键
adb shell input keyevent KEYCODE_BACK # 返回键
adb shell input keyevent KEYCODE_MENU # 菜单键
adb shell input keyevent KEYCODE_VOLUME_UP # 音量+
adb shell input keyevent KEYCODE_VOLUME_DOWN # 音量-
adb shell input keyevent KEYCODE_POWER # 电源键
adb shell input keyevent KEYCODE_ENTER # 回车键
adb shell input keyevent KEYCODE_DEL # 删除键
# 使用数字键码
adb shell input keyevent 3 # Home键
adb shell input keyevent 4 # 返回键
adb shell input keyevent 24 # 音量+
adb shell input keyevent 25 # 音量-
adb shell input keyevent 26 # 电源键
滑动操作
adb shell input swipe <x1> <y1> <x2> <y2> [持续时间(ms)]
示例:
# 从(300, 500)滑动到(300, 900)
adb shell input swipe 300 500 300 900
# 快速滑动(100ms)
adb shell input swipe 300 500 300 900 100
# 模拟长按(500ms)
adb shell input swipe 300 500 300 500 500
长按操作
adb shell input swipe <x> <y> <x> <y> 500
屏幕操作
截图
adb shell screencap <保存路径>
示例:
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png ./
录屏
adb shell screenrecord <保存路径> [选项]
选项:
--time-limit <秒>: 限制录制时间(默认180秒)--size <宽x高>: 设置分辨率--bit-rate <比特率>: 设置比特率(默认4Mbps)
示例:
# 录制10秒视频
adb shell screenrecord --time-limit 10 /sdcard/video.mp4
# 设置分辨率
adb shell screenrecord --size 1280x720 /sdcard/video.mp4
# 停止录制:Ctrl+C 或执行时间限制
查看屏幕分辨率
adb shell wm size
adb shell wm size <宽x高> # 设置分辨率(需要root)
隐藏状态栏和导航栏
# 完全沉浸式(隐藏状态栏和导航栏)
adb shell settings put global policy_control immersive.full=*
# 仅隐藏状态栏
adb shell settings put global policy_control immersive.status=*
# 仅隐藏导航栏
adb shell settings put global policy_control immersive.navigation=*
# 恢复显示
adb shell settings put global policy_control null
# 完全隐藏(另一种方式)
adb shell wm overscan 0,0,0,0
系统信息查询
查看系统属性
adb shell getprop # 查看所有系统属性
adb shell getprop <属性名> # 查看特定属性
常用属性:
adb shell getprop ro.build.version.sdk # API版本
adb shell getprop ro.build.version.release # Android版本
adb shell getprop ro.product.model # 设备型号
adb shell getprop ro.product.manufacturer # 制造商
adb shell getprop ro.serialno # 序列号
查看CPU信息
adb shell cat /proc/cpuinfo
adb shell dumpsys cpuinfo
查看内存信息
adb shell cat /proc/meminfo
adb shell dumpsys meminfo
adb shell dumpsys meminfo <包名> # 查看特定应用内存
查看存储信息
adb shell df # 查看存储空间
adb shell df -h # 人类可读格式
查看电量信息
adb shell dumpsys battery
查看网络信息
# 查看MAC地址
adb shell cat /sys/class/net/wlan0/address
# 查看IP地址
adb shell ip addr show wlan0
adb shell ifconfig wlan0
查看设备信息
adb shell getprop ro.build.version.sdk # SDK版本
adb shell getprop ro.build.version.release # Android版本
adb shell getprop ro.product.model # 设备型号
adb shell getprop ro.product.brand # 品牌
adb shell getprop ro.product.manufacturer # 制造商
查看可用命令
adb shell ls /system/bin # 查看系统命令
adb shell which <命令名> # 查找命令路径
网络操作
WiFi控制
adb shell svc wifi enable # 打开WiFi
adb shell svc wifi disable # 关闭WiFi
移动网络控制
adb shell svc data enable # 打开移动数据
adb shell svc data disable # 关闭移动数据
查看WiFi密码(需要root)
adb shell cat /data/misc/wifi/*.conf
Monkey 压力测试
基本Monkey测试
adb shell monkey -p <包名> -v <事件数>
示例:
# 单应用100个随机事件
adb shell monkey -p com.example.app -v 100
# 多应用测试
adb shell monkey -p com.app1 -p com.app2 -v -v 100
完整Monkey测试命令
adb shell monkey -p <包名> \
--throttle 100 \ # 事件间隔100ms
--ignore-crashes \ # 忽略崩溃
--ignore-timeouts \ # 忽略超时
--ignore-security-exceptions \ # 忽略安全异常
--ignore-native-crashes \ # 忽略Native崩溃
--monitor-native-crashes \ # 监控Native崩溃
-v -v -v \ # 详细日志(3级)
-s <种子值> \ # 设置随机种子
<事件数>
示例:
adb shell monkey -p com.example.app \
--throttle 100 \
--ignore-crashes \
--ignore-timeouts \
--ignore-security-exceptions \
--ignore-native-crashes \
--monitor-native-crashes \
-v -v -v \
-s 1540475754297 \
1000
Monkey测试选项说明
-p <包名>: 指定测试的应用包名-v: 日志详细程度(可叠加,最多3个)--throttle <毫秒>: 事件之间的延迟--ignore-crashes: 忽略应用崩溃,继续测试--ignore-timeouts: 忽略ANR,继续测试--ignore-security-exceptions: 忽略权限异常-s <种子值>: 设置随机种子,可重现测试序列--pct-touch <百分比>: 触摸事件百分比--pct-motion <百分比>: 滑动事件百分比--pct-trackball <百分比>: 轨迹球事件百分比--pct-nav <百分比>: 导航事件百分比--pct-syskeys <百分比>: 系统按键事件百分比
高级调试技巧
查看内核日志
adb shell dmesg # 查看内核调试信息
adb shell dmesg | tail -100 # 查看最后100行
文件系统操作
# 创建目录
adb shell mkdir /sdcard/test
# 查看文件
adb shell cat <文件路径>
adb shell ls -l <目录路径>
# 删除文件
adb shell rm <文件路径>
# 复制文件
adb shell cp <源路径> <目标路径>
# 移动文件
adb shell mv <源路径> <目标路径>
权限管理
# 当root权限后仍提示只读时
adb root
adb remount
adb shell mount -o remount,rw /
查看系统服务
adb shell service list # 列出所有服务
adb shell dumpsys <服务名> # 查看服务信息
常用服务:
adb shell dumpsys activity # Activity信息
adb shell dumpsys window # 窗口信息
adb shell dumpsys meminfo # 内存信息
adb shell dumpsys battery # 电池信息
adb shell dumpsys cpuinfo # CPU信息
adb shell dumpsys package # 包信息
adb shell dumpsys connectivity # 网络连接信息
性能监控
# 查看CPU使用率
adb shell top
adb shell top -n 1 # 只显示一次
# 查看特定进程
adb shell top | grep <进程名>
# 查看网络统计
adb shell cat /proc/net/dev
应用调试
# 查看应用进程
adb shell ps | grep <包名>
# 查看应用UID
adb shell dumpsys package <包名> | grep userId
# 查看应用权限
adb shell dumpsys package <包名> | grep permission
快速操作组合
# 一键截图并拉取
adb shell screencap /sdcard/screen.png && adb pull /sdcard/screen.png ./
# 一键清理日志并开始记录
adb logcat -c && adb logcat > log.txt
# 一键安装并启动
adb install app.apk && adb shell am start -n com.example.app/.MainActivity
常用命令速查表
| 功能 | 命令 |
|---|---|
| 查看设备 | adb devices |
| 安装应用 | adb install -r app.apk |
| 卸载应用 | adb uninstall <包名> |
| 查看日志 | adb logcat |
| 过滤日志 | adb logcat | grep "关键字" |
| 截图 | adb shell screencap /sdcard/screen.png |
| 录屏 | adb shell screenrecord /sdcard/video.mp4 |
| 启动应用 | adb shell am start -n <包名>/<Activity> |
| 停止应用 | adb shell am force-stop <包名> |
| 查看当前Activity | adb shell dumpsys activity | grep mFocus |
| 查看包列表 | adb shell pm list packages -3 |
| 清除数据 | adb shell pm clear <包名> |
| 点击屏幕 | adb shell input tap x y |
| 输入文本 | adb shell input text "内容" |
| 滑动 | adb shell input swipe x1 y1 x2 y2 |
| 按键 | adb shell input keyevent KEYCODE_HOME |
| 重启 | adb reboot |
| 查看系统版本 | adb shell getprop ro.build.version.release |
| 查看SDK版本 | adb shell getprop ro.build.version.sdk |
注意事项
- 路径问题:Windows下路径不要包含中文,否则可能失败
- 权限问题:部分命令需要root权限(如
adb remount、pm disable) - 多设备连接:使用
-s <设备SN>指定设备 - WiFi连接:需要设备与电脑在同一局域网
- 日志过滤:Windows使用
findstr,Linux/Mac使用grep - Monkey测试:建议在测试设备上运行,避免影响正常使用
参考资源
最后更新:2024年