Files
mkdocs/docs/adb调试命令/adb常用命令.md
2026-01-14 17:55:16 +08:00

18 KiB
Raw Blame History

ADB 常用命令指南

目录


设备连接管理

查看设备列表

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

注意事项

  1. 路径问题:Windows下路径不要包含中文,否则可能失败
  2. 权限问题:部分命令需要root权限(如adb remount、pm disable)
  3. 多设备连接:使用-s <设备SN>指定设备
  4. WiFi连接:需要设备与电脑在同一局域网
  5. 日志过滤:Windows使用findstr,Linux/Mac使用grep
  6. Monkey测试:建议在测试设备上运行,避免影响正常使用

参考资源


最后更新:2024年