#tech / mobile
#type / howto
#status / evergreen
#resource / android
[!info] related notes
ADB 命令速查
核心概念
PC 端 Android 设备端
┌─────────┐ ┌──────────────┐
│ adb.exe │── USB/TCP ──▶│ adbd (守护进程)│
│ (client)│ │ (daemon) │
└─────────┘ └──────────────┘
- adb client:终端敲的命令
- adb server:PC 上的后台进程,管理通信
- adbd:设备上的守护进程,执行实际操作
设备管理
| 命令 | 说明 | 常用示例 |
|---|
adb devices | 列出已连接设备 | adb devices -l(显示详细信息:型号、设备名) |
adb connect <ip>:<port> | 无线连接设备(需先 adb tcpip <port>) | adb connect 192.168.x.x:5555 |
adb disconnect | 断开无线连接 | adb disconnect 192.168.x.x:5555(断开指定设备) |
adb tcpip <port> | 切换设备为 TCP/IP 模式(无线调试前置步骤) | adb tcpip 5555 |
adb usb | 切换回 USB 连接模式 | adb usb |
adb -s <serial> <command> | 指定设备执行命令(多设备时必需) | adb -s emulator-5554 shell |
adb reboot | 重启设备 | adb reboot bootloader(重启到 fastboot) |
adb get-state | 获取设备状态 | 返回 device、offline、unknown |
adb get-serialno | 获取设备序列号 | adb get-serialno |
adb kill-server | 终止 adb 服务 | adb kill-server && adb start-server(重启服务) |
adb start-server | 启动 adb 服务 | 通常自动启动,异常时手动执行 |
文件传输
| 命令 | 说明 | 常用示例 |
|---|
adb push <local> <remote> | 从 PC 推送文件到设备 | adb push ./app.apk /sdcard/ |
adb pull <remote> <local> | 从设备拉取文件到 PC | adb pull /sdcard/DCIM/ ./photos/ |
adb push --sync <local> <remote> | 只推送新文件或更新的文件 | adb push --sync ./data/ /sdcard/data/ |
adb pull -a <remote> <local> | 拉取文件并保留时间戳 | adb pull -a /sdcard/file.txt ./ |
应用管理
| 命令 | 说明 | 常用示例 |
|---|
adb install <apk> | 安装 APK | adb install ./app.apk |
adb install -r <apk> | 覆盖安装(保留数据) | adb install -r ./app.apk |
adb install -d <apk> | 允许降级安装 | adb install -d ./app.apk |
adb install -t <apk> | 安装测试包 | adb install -t ./test.apk |
adb install -g <apk> | 安装并授予所有权限 | adb install -g ./app.apk |
adb uninstall <package> | 卸载应用 | adb uninstall com.example.app |
adb uninstall -k <package> | 卸载但保留数据和缓存 | adb uninstall -k com.example.app |
adb shell pm list packages | 列出所有已安装包名 | adb shell pm list packages -3(仅第三方) |
adb shell pm list packages -3 | 列出第三方应用 | adb shell pm list packages | grep example |
adb shell pm path <package> | 查看应用安装路径 | adb shell pm path com.example.app |
adb shell pm clear <package> | 清除应用数据 | adb shell pm clear com.example.app |
adb shell am start -n <pkg>/<activity> | 启动指定 Activity | adb shell am start -n com.example/.MainActivity |
adb shell am force-stop <package> | 强制停止应用 | adb shell am force-stop com.example.app |
Shell 操作
设备信息
| 命令 | 说明 |
|---|
adb shell getprop ro.product.model | 获取设备型号 |
adb shell getprop ro.build.version.release | 获取 Android 版本 |
adb shell getprop ro.build.version.sdk | 获取 SDK 版本 |
adb shell cat /proc/cpuinfo | 查看 CPU 信息 |
adb shell cat /proc/meminfo | 查看内存信息 |
adb shell df -h | 查看磁盘空间 |
adb shell wm size | 获取屏幕分辨率 |
adb shell wm density | 获取屏幕密度 |
adb shell settings get system screen_brightness | 获取当前亮度 |
adb shell settings put system screen_brightness 128 | 设置亮度(0-255) |
文件系统
| 命令 | 说明 |
|---|
adb shell ls <path> | 列出目录内容 |
adb shell ls -la <path> | 列出详细信息(含隐藏文件) |
adb shell cd <path> | 切换目录 |
adb shell cat <file> | 查看文件内容 |
adb shell mkdir <path> | 创建目录 |
adb shell rm <file> | 删除文件 |
adb shell rm -rf <path> | 递归删除目录 |
adb shell cp <src> <dst> | 复制文件 |
adb shell mv <src> <dst> | 移动/重命名文件 |
adb shell find <path> -name <pattern> | 搜索文件 |
adb shell du -sh <path> | 查看目录大小 |
进程与性能
| 命令 | 说明 |
|---|
adb shell ps | 列出所有进程 |
adb shell ps -A | grep <keyword> | 按关键词过滤进程 |
adb shell top -n 1 | 查看实时进程(单次快照) |
adb shell top -m 10 -n 1 | 查看内存占用前 10 的进程 |
adb shell kill <pid> | 终止进程 |
adb shell dumpsys meminfo <package> | 查看应用内存详情 |
adb shell dumpsys cpuinfo | 查看 CPU 使用情况 |
adb shell dumpsys battery | 查看电池状态 |
adb shell dumpsys activity activities | 查看当前 Activity 栈 |
日志 (Logcat)
| 命令 | 说明 | 常用示例 |
|---|
adb logcat | 查看实时日志(所有标签) | adb logcat |
adb logcat -s <TAG> | 按标签过滤 | adb logcat -s ReactNative |
adb logcat *:E | 只显示 Error 级别 | adb logcat *:W(Warning 及以上) |
adb logcat -d | dump 当前日志缓冲区后退出 | adb logcat -d > log.txt |
adb logcat -c | 清空日志缓冲区 | adb logcat -c |
adb logcat -v time | 带时间戳显示 | adb logcat -v threadtime(线程+时间) |
adb logcat -v brief *:S MyApp:D | 自定义过滤 | 只显示 MyApp 的 Debug 及以上 |
adb logcat --pid=<pid> | 按进程 ID 过滤 | adb logcat --pid=12345 |
截屏与录屏
| 命令 | 说明 | 常用示例 |
|---|
adb shell screencap <path> | 截屏保存到设备 | adb shell screencap /sdcard/1.png |
adb shell screencap -p | 截屏并输出到 stdout | adb shell screencap -p > screen.png |
adb shell screenrecord <path> | 录屏(默认最长 180 秒,Ctrl+C 停止) | adb shell screenrecord /sdcard/demo.mp4 |
adb shell screenrecord --time-limit <sec> <path> | 限制录屏时长 | adb shell screenrecord --time-limit 30 /sdcard/demo.mp4 |
adb shell screenrecord --size <WxH> <path> | 指定分辨率 | adb shell screenrecord --size 720x1280 /sdcard/demo.mp4 |
adb shell screenrecord --bit-rate <rate> <path> | 指定比特率 | adb shell screenrecord --bit-rate 4000000 /sdcard/demo.mp4 |
端口转发与调试
| 命令 | 说明 | 常用示例 |
|---|
adb forward tcp:<local> tcp:<remote> | PC 端口 → 设备端口 | adb forward tcp:8080 tcp:8080 |
adb forward --list | 列出所有端口转发 | adb forward --list |
adb forward --remove tcp:<local> | 移除端口转发 | adb forward --remove tcp:8080 |
adb forward --remove-all | 移除所有端口转发 | adb forward --remove-all |
adb reverse tcp:<remote> tcp:<local> | 设备端口 → PC 端口(React Native 等) | adb reverse tcp:8081 tcp:8081 |
adb reverse --list | 列出所有反向端口转发 | adb reverse --list |
adb reverse --remove tcp:<remote> | 移除反向端口转发 | adb reverse --remove tcp:8081 |
adb jdwp | 列出支持 JDWP 调试的进程 | adb jdwp |
常见问题速查
| 问题 | 原因 | 解决方案 |
|---|
adb devices 无输出 | adb 未在 PATH 中 | 检查 ANDROID_HOME 和 PATH 配置 |
设备显示 unauthorized | 未授权 USB 调试 | 手机上弹出授权对话框,点击”允许”,勾选”始终允许” |
设备显示 offline | 连接异常 | 重插 USB 或 adb kill-server && adb start-server |
error: more than one device | 多设备连接 | 用 adb -s <serial> 指定设备 |
INSTALL_FAILED_ALREADY_EXISTS | 已安装同包名应用 | 用 adb install -r 覆盖安装,或先 adb uninstall |
INSTALL_FAILED_VERSION_DOWNGRADE | 版本降级 | 用 adb install -d 允许降级 |
| 无线连接失败 | 未切换到 TCP/IP 模式 | 先 USB 连接,执行 adb tcpip 5555,再 adb connect |
adb push 权限不足 | 目录无写入权限 | 推送到 /sdcard/ 等可写目录 |