Android ADB 完全使用指南
ADB(Android Debug Bridge)是一个通用的命令行工具,它允许你与 Android 设备进行通信。ADB 是 Android SDK 的一部分,提供了对设备的广泛控制能力。
目录
1. ADB 安装
1.1 Windows 安装
方法一:通过 Android Studio 安装(推荐)
- 下载并安装 Android Studio
- 打开 Android Studio → SDK Manager(Tools > SDK Manager)
- 在 SDK Tools 标签页中勾选 Android SDK Platform-Tools
- 点击 Apply 安装
方法二:独立安装 Platform Tools
- 下载 SDK Platform Tools
- 解压到任意目录(如
C:\platform-tools) - 配置环境变量:
- 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
- 在 Path 中添加 platform-tools 目录路径
- 例如:
C:\Users\YourName\AppData\Local\Android\Sdk\platform-tools
验证安装
bash
adb --version
1.2 macOS 安装
方法一:通过 Homebrew 安装(推荐)
bash
# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 ADB
brew install android-platform-tools
方法二:通过 Android Studio 安装
与 Windows 相同,通过 SDK Manager 安装 Platform Tools。
方法三:手动安装
bash
# 下载并解压
curl -O https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
unzip platform-tools-latest-darwin.zip
# 移动到合适位置并配置环境变量
mv platform-tools ~/Library/Android/sdk/
echo 'export PATH=$PATH:~/Library/Android/sdk/platform-tools' >> ~/.zshrc
source ~/.zshrc
验证安装
bash
adb --version
1.3 Linux 安装
Ubuntu / Debian
bash
sudo apt update
sudo apt install android-tools-adb android-tools-fastboot
Fedora / CentOS / RHEL
bash
sudo dnf install android-tools
Arch Linux
bash
sudo pacman -S android-tools
手动安装
bash
# 下载
curl -O https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip
# 配置环境变量
sudo mv platform-tools /opt/
echo 'export PATH=$PATH:/opt/platform-tools' >> ~/.bashrc
source ~/.bashrc
验证安装
bash
adb --version
2. 如何使用 ADB
2.1 启用设备的 USB 调试
在使用 ADB 前,需要在 Android 设备上启用开发者选项和 USB 调试:
-
开启开发者选项:
- 进入 设置 → 关于手机
- 连续点击"版本号"7 次,直到提示"您已处于开发者模式"
-
开启 USB 调试:
- 进入 设置 → 系统 → 开发者选项
- 打开 USB 调试 开关
- (可选)打开 OEM 解锁(如需刷机)
-
连接设备:
- 使用 USB 线连接电脑和手机
- 在手机上允许 USB 调试授权
2.2 基本工作流程
bash
# 1. 检查设备是否连接成功
adb devices
# 2. 进入设备 shell
adb shell
# 3. 执行具体命令...
# 4. 退出 shell
exit
2.3 ADB 架构理解
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ ADB 客户端 │ ←──→ │ ADB 服务器 │ ←──→ │ ADB 守护进程 │
│ (你的电脑) │ │ (后台进程) │ │ (Android设备) │
└─────────────┘ └─────────────┘ └─────────────┘
- ADB Client:运行在开发机器上,发送命令
- ADB Server:运行在开发机器上的后台进程,管理客户端与守护进程通信
- ADBD(ADB Daemon):运行在 Android 设备上的后台进程
2.4 无线调试(Wi-Fi)
Android 11+ 支持无需 USB 的无线调试:
bash
# 方式一:通过配对码连接(Android 11+)
# 1. 在手机上开启无线调试并选择"使用配对码配对"
# 2. 执行:
adb pair IP:端口
# 输入配对码
# 方式二:传统方式(需要先用USB连接一次)
# 1. 确保手机和电脑在同一WiFi
# 2. 先用USB连接设备
adb tcpip 5555 # 切换为网络模式
adb connect 192.168.x.x:5555 # 连接设备IP
# 3. 现在可以拔掉USB线了
3. 常用命令大全
3.1 设备管理命令
| 命令 | 说明 |
|---|---|
adb devices |
列出所有已连接的设备 |
adb devices -l |
列出设备详细信息(含设备型号) |
adb get-serialno |
获取设备的序列号 |
adb get-state |
获取设备状态(device/offline/recovery/bootloader) |
adb kill-server |
终止 ADB 服务器 |
adb start-server |
启动 ADB 服务器 |
adb reconnect |
重新连接设备 |
adb connect <IP>:<端口> |
通过网络连接设备(默认端口5555) |
adb disconnect <IP>:<端口> |
断开网络连接的设备 |
adb usb |
将设备切换回 USB 模式 |
adb tcpip <端口> |
将设备切换为网络模式,监听指定端口 |
bash
# 示例:查看已连接设备
adb devices
# 输出示例:
# List of devices attached
# xxxxxxxx device
# emulator-5554 device
# 示例:连接网络设备
adb connect 192.168.1.100:5555
# 示例:查看设备详细信息
adb devices -l
# 输出包含:序列号、状态、product、model、device、transport_id
3.2 多设备操作
当连接多个设备时,需要使用 -s 参数指定设备:
bash
# 语法:adb -s <序列号> <命令>
# 示例:向指定设备安装应用
adb -s emulator-5554 install app.apk
# 示例:进入指定设备的 shell
adb -s xxxxxxxx shell
# 示例:向指定设备传输文件
adb -s xxxxxxxx push file.txt /sdcard/
3.3 应用管理(Package Manager)
安装与卸载
| 命令 | 说明 |
|---|---|
adb install <apk路径> |
安装 APK |
adb install -r <apk路径> |
覆盖安装(保留数据) |
adb install -d <apk路径> |
允许降级安装 |
adb install -g <apk路径> |
授予所有运行时权限 |
adb install -t <apk路径> |
允许安装测试包 |
adb install-multiple <apk1> <apk2> |
安装多个 APK(split APK) |
adb uninstall <包名> |
卸载应用 |
adb uninstall -k <包名> |
卸载但保留数据和缓存 |
bash
# 示例:安装应用
adb install /path/to/app.apk
# 示例:覆盖安装(更新应用,保留数据)
adb install -r /path/to/app.apk
# 示例:完整安装(覆盖+授予权限+测试包)
adb install -r -g -t /path/to/app.apk
# 示例:卸载应用
adb uninstall com.example.app
# 示例:卸载但保留数据(重新安装后数据还在)
adb uninstall -k com.example.app
包信息查询
bash
# 列出所有已安装包
adb shell pm list packages
# 只列出系统应用
adb shell pm list packages -s
# 只列出第三方应用
adb shell pm list packages -3
# 列出包含特定关键字的包
adb shell pm list packages | grep "wechat"
# 显示包安装位置
adb shell pm list packages -f
# 显示包的详细信息
adb shell dumpsys package com.example.app
# 查看某个包的 APK 路径
adb shell pm path com.example.app
# 清除应用数据(相当于在设置中清除数据)
adb shell pm clear com.example.app
# 查看应用的权限
adb shell dumpsys package com.example.app | grep permission
应用状态管理
bash
# 强制停止应用
adb shell am force-stop com.example.app
# 启动应用的某个 Activity
adb shell am start -n com.example.app/.MainActivity
# 启动应用并传递参数
adb shell am start -n com.example.app/.MainActivity -e key value
# 启动服务
adb shell am startservice -n com.example.app/.MyService
# 发送广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
# 结束广播接收器
adb shell am stop-service -n com.example.app/.MyService
3.4 文件传输
| 命令 | 说明 |
|---|---|
adb push <本地路径> <设备路径> |
从电脑推送文件到设备 |
adb pull <设备路径> [本地路径] |
从设备拉取文件到电脑 |
adb sync |
同步目录(需配合 $ANDROID_PRODUCT_OUT 使用) |
bash
# 示例:推送文件到设备
adb push /Users/name/file.txt /sdcard/Download/
# 示例:推送整个目录
adb push /Users/name/folder/ /sdcard/Download/folder/
# 示例:从设备拉取文件到当前目录
adb pull /sdcard/Download/file.txt .
# 示例:从设备拉取文件到指定路径
adb pull /sdcard/DCIM/Camera/photo.jpg ~/Desktop/
# 示例:拉取整个目录
adb pull /sdcard/DCIM/ ~/Desktop/backup/
# 示例:拉取应用数据(需要root)
adb pull /data/data/com.example.app/ ~/backup/app_data/
3.5 Shell 命令
进入交互式 Shell
bash
# 进入设备 shell(默认进入用户shell)
adb shell
# 以 root 权限进入 shell(需要设备已root)
adb shell su
# 执行单条 shell 命令
adb shell <命令>
# 示例:查看设备型号
adb shell getprop ro.product.model
# 示例:查看 Android 版本
adb shell getprop ro.build.version.release
# 示例:查看 SDK 版本
adb shell getprop ro.build.version.sdk
常用 Shell 命令
bash
# 文件操作
adb shell ls -la /sdcard/ # 列出目录内容
adb shell cat /proc/cpuinfo # 查看 CPU 信息
adb shell df # 查看磁盘空间
adb shell du -sh /sdcard/ # 查看目录大小
adb shell mkdir /sdcard/new_folder # 创建目录
adb shell rm -rf /sdcard/temp # 删除文件/目录
adb shell cp /sdcard/a.txt /sdcard/b.txt # 复制文件
adb shell mv /sdcard/old /sdcard/new # 移动/重命名
# 查看系统信息
adb shell cat /proc/meminfo # 查看内存信息
adb shell cat /proc/cpuinfo # 查看 CPU 详细信息
adb shell uptime # 查看运行时间
adb shell whoami # 查看当前用户
adb shell id # 查看用户ID和组ID
adb shell ps # 查看进程列表
adb shell ps -A | grep com.android # 过滤特定进程
adb shell top # 实时查看进程资源占用
# 网络相关
adb shell ifconfig # 查看网络接口
adb shell ip addr # 查看 IP 地址(新版Android)
adb shell ping www.google.com # 测试网络连通性
adb shell netstat # 查看网络连接状态
adb shell cat /data/misc/wifi/*.conf # 查看 WiFi 配置(需要root)
# 系统属性
adb shell getprop # 列出所有系统属性
adb shell getprop ro.serialno # 获取序列号
adb shell getprop ro.build.version.release # 获取 Android 版本
adb shell setprop <key> <value> # 设置系统属性(临时,重启失效)
3.6 日志相关
Logcat(日志查看)
| 命令 | 说明 |
|---|---|
adb logcat |
查看实时日志 |
adb logcat -d |
查看日志后退出(不持续监听) |
adb logcat -c |
清除日志缓冲区 |
adb logcat -s <标签> |
过滤特定标签 |
adb logcat *:<级别> |
按日志级别过滤 |
adb logcat -f <文件> |
保存日志到设备文件 |
bash
# 日志级别(从低到高):
# V - Verbose(最详细)
# D - Debug
# I - Info
# W - Warn
# E - Error
# F - Fatal
# S - Silent(最高,不输出任何内容)
# 示例:查看实时日志
adb logcat
# 示例:只查看 Error 级别以上日志
adb logcat *:E
# 示例:过滤特定 TAG(显示 MyApp 的 Debug 以上日志)
adb logcat -s MyApp:D
# 示例:过滤多个 TAG
adb logcat -s MyApp:D System.out:I
# 示例:将日志保存到文件
adb logcat -d > ~/Desktop/log.txt
# 示例:持续保存日志到文件
adb logcat | tee ~/Desktop/live_log.txt
# 示例:查看特定应用的日志(通过PID)
adb shell pidof com.example.app | xargs -I {} adb logcat --pid={}
# 示例:清除日志后查看
adb logcat -c && adb logcat
# 示例:查看崩溃日志(Fatal 和 Error)
adb logcat AndroidRuntime:E *:S
# 示例:查看带有时间戳的日志
adb logcat -v time
# 示例:查看带进程ID的日志
adb logcat -v process
# 示例:查看线程日志
adb logcat -v threadtime
# 示例:彩色输出日志
adb logcat -v color
# 示例:格式化长消息(不换行截断)
adb logcat -v long
缓冲区类型
bash
# Android 有多个日志缓冲区:
# main - 主应用日志(默认)
# system - 系统日志
# radio - 射频/通话相关日志
# events - 系统事件日志
# crash - 崩溃日志
# kernel - 内核日志(需要root)
# 查看指定缓冲区的日志
adb logcat -b main # 主日志
adb logcat -b system # 系统日志
adb logcat -b radio # 射频日志
adb logcat -b events # 事件日志
adb logcat -b crash # 崩溃日志
adb logcat -b all # 所有缓冲区
# 示例:查看系统崩溃日志
adb logcat -b crash -d
# 示例:同时查看 main 和 system
adb logcat -b main -b system
Dumpsys(系统服务信息)
bash
# 查看所有可用服务
adb shell dumpsys -l
# 查看电池状态
adb shell dumpsys battery
# 查看电池设置(是否忽略电池优化)
adb shell dumpsys deviceidle
# 查看内存使用情况
adb shell dumpsys meminfo
# 查看特定应用的内存
adb shell dumpsys meminfo com.example.app
# 查看 CPU 使用情况
adb shell dumpsys cpuinfo
# 查看 Activity 状态
adb shell dumpsys activity
# 查看当前显示的 Activity
adb shell dumpsys activity top
# 查看窗口管理器
adb shell dumpsys window
# 查看显示信息
adb shell dumpsys display
# 查看通知
adb shell dumpsys notification
# 查看电源管理
adb shell dumpsys power
# 查看存储状态
adb shell dumpsys storage
# 查看网络状态
adb shell dumpsys connectivity
adb shell dumpsys wifi
adb shell dumpsys netstats
# 查看输入设备
adb shell dumpsys input
# 查看位置服务
adb shell dumpsys location
3.7 屏幕操作
截图
bash
# 截图并保存到设备
adb shell screencap /sdcard/screenshot.png
# 截图并直接拉取到电脑
adb shell screencap -p /sdcard/screenshot.png && adb pull /sdcard/screenshot.png ~/Desktop/
# 一行命令截图到电脑(使用管道)
adb exec-out screencap -p > ~/Desktop/screenshot.png
# 截图并直接复制到剪贴板(macOS)
adb exec-out screencap -p | pbcopy
录屏
bash
# 开始录屏(默认录制 180 秒,最长 180 秒)
adb shell screenrecord /sdcard/video.mp4
# 设置录制时长(秒)
adb shell screenrecord --time-limit 30 /sdcard/video.mp4
# 设置视频尺寸
adb shell screenrecord --size 1280x720 /sdcard/video.mp4
# 设置比特率(默认 4Mbps)
adb shell screenrecord --bit-rate 8000000 /sdcard/video.mp4
# 显示触摸反馈(录屏时显示点击位置)
adb shell screenrecord --show-touches /sdcard/video.mp4
# 拉取录屏文件
adb pull /sdcard/video.mp4 ~/Desktop/
# 停止录屏(按 Ctrl+C)
3.8 按键与输入模拟
输入文本
bash
# 输入文本(不支持中文,中文需要用其他方式)
adb shell input text "HelloWorld"
# 输入带空格的内容(空格用 %s 代替)
adb shell input text "Hello%sworld"
# 输入特殊字符(使用 KeyEvent)
按键事件(KeyEvent)
bash
# 常用按键代码:
# 3 - HOME 键
# 4 - 返回键
# 24 - 音量加
# 25 - 音量减
# 26 - 电源键
# 27 - 相机键
# 66 - 回车键
# 67 - 删除键
# 82 - 菜单键
# 187 - 最近任务键
# 220 - 亮度降低
# 221 - 亮度增加
# 223 - 使设备休眠
# 224 - 唤醒设备
# 示例:按返回键
adb shell input keyevent 4
# 示例:按 HOME 键
adb shell input keyevent 3
# 示例:按电源键
adb shell input keyevent 26
# 示例:增加音量
adb shell input keyevent 24
# 示例:降低音量
adb shell input keyevent 25
# 示例:打开最近任务
adb shell input keyevent 187
# 示例:组合键(Ctrl+C 需要先按 Ctrl,再按 C,再释放)
# 注意:input 命令不支持真正的组合键,需要借助其他工具
触摸与滑动
bash
# 点击屏幕坐标 (x, y)
adb shell input tap 500 800
# 滑动屏幕(从 x1,y1 滑动到 x2,y2)
adb shell input swipe 300 1000 300 500
# 长按(滑动起点和终点相同,持续时间 1000ms)
adb shell input swipe 500 800 500 800 1000
# 快速滑动(模拟列表滚动)
adb shell input swipe 500 1500 500 500 100
3.9 系统操作
重启设备
bash
# 普通重启
adb reboot
# 重启到 Recovery 模式
adb reboot recovery
# 重启到 Bootloader/Fastboot 模式
adb reboot bootloader
# 重启到 Sideload 模式(用于OTA更新)
adb reboot sideload
关机和唤醒
bash
# 让设备休眠(模拟按电源键)
adb shell input keyevent 26
# 唤醒设备
adb shell input keyevent 224
# 通过 root 命令关机(需要root)
adb shell su -c "reboot -p"
设置修改
bash
# 修改屏幕亮度(0-255)
adb shell settings put system screen_brightness 200
# 修改屏幕超时时间(毫秒)
adb shell settings put system screen_off_timeout 300000
# 获取设置值
adb shell settings get system screen_brightness
# 全局设置
adb shell settings put global adb_enabled 1
# 安全设置
adb shell settings put secure show_ime_with_hard_keyboard 1
时间设置
bash
# 设置日期时间(需要root)
adb shell su -c "date -s 202401011200.00"
# 查看当前时间
adb shell date
3.10 权限管理
bash
# 授予权限
adb shell pm grant com.example.app android.permission.CAMERA
# 撤销权限
adb shell pm revoke com.example.app android.permission.CAMERA
# 重置所有权限(恢复到安装时的默认状态)
adb shell pm reset-permissions -p com.example.app
# 查看应用的权限状态
adb shell dumpsys package com.example.app | grep -A 20 "permissions"
# 常见危险权限:
# android.permission.CAMERA
# android.permission.RECORD_AUDIO
# android.permission.ACCESS_FINE_LOCATION
# android.permission.READ_CONTACTS
# android.permission.READ_EXTERNAL_STORAGE
# android.permission.WRITE_EXTERNAL_STORAGE
# android.permission.READ_PHONE_STATE
# android.permission.SEND_SMS
3.11 备份与恢复
bash
# 完整备份(需要确认备份密码,会弹窗)
adb backup -apk -shared -all -f ~/backup.ab
# 备份参数说明:
# -apk 包含 APK 安装包
# -noapk 不包含 APK(只备份数据)
# -shared 包含共享存储(/sdcard)
# -noshared 不包含共享存储
# -all 备份所有应用
# -system 包含系统应用
# -nosystem 不包含系统应用
# -f <文件> 指定备份文件路径
# 备份单个应用
adb backup -apk -f ~/app_backup.ab com.example.app
# 恢复备份
adb restore ~/backup.ab
# 注意:Android 12+ 可能限制了 adb backup 的功能
3.12 数据库操作
bash
# 进入应用的 SQLite 数据库目录(需要root或调试版本)
adb shell
run-as com.example.app
# 打开数据库
cd databases
sqlite3 app_database.db
# SQLite 命令
.tables # 列出所有表
.schema table_name # 查看表结构
select * from table_name; # 查询数据
.exit # 退出 sqlite3
# 或者直接执行 SQL
adb shell "run-as com.example.app sqlite3 databases/app.db 'select * from users;'"
# 导出数据库到电脑
adb exec-out run-as com.example.app cat databases/app.db > ~/Desktop/app.db
3.13 网络命令
bash
# 查看设备 IP 地址
adb shell ifconfig wlan0
adb shell ip addr show wlan0
# 端口转发(将设备的端口映射到电脑)
adb forward tcp:8080 tcp:8080
# 反向端口转发(将电脑的端口映射到设备)
adb reverse tcp:3000 tcp:3000
# 查看端口转发列表
adb forward --list
# 移除端口转发
adb forward --remove tcp:8080
# 移除所有端口转发
adb forward --remove-all
# 示例:在电脑上访问设备上的 Web 服务
adb forward tcp:8080 tcp:8080
# 然后在电脑浏览器访问 http://localhost:8080
# 示例:设备访问电脑上的开发服务器
adb reverse tcp:3000 tcp:3000
# 然后在设备上访问 http://localhost:3000
3.14 IMEI 与设备信息
bash
# 查看设备序列号
adb get-serialno
# 查看设备型号
adb shell getprop ro.product.model
# 查看设备制造商
adb shell getprop ro.product.manufacturer
# 查看 Android 版本
adb shell getprop ro.build.version.release
# 查看 SDK 版本号
adb shell getprop ro.build.version.sdk
# 查看系统版本号
adb shell getprop ro.build.display.id
# 查看设备代号
adb shell getprop ro.product.device
# 查看设备品牌
adb shell getprop ro.product.brand
# 查看安全补丁级别
adb shell getprop ro.build.version.security_patch
# 查看基带版本
adb shell getprop gsm.version.baseband
# 查看 IMEI(需要 root 或特殊权限)
adb shell service call iphonesubinfo 1
# 或者
adb shell "dumpsys telephony.registry | grep DeviceId"
3.15 性能与调试
bash
# 查看内存使用情况
adb shell dumpsys meminfo
# 查看特定进程内存
adb shell dumpsys meminfo com.example.app
# 查看实时内存分配(需要 Android Studio Profiler 或简化版)
adb shell am dumpheap com.example.app /sdcard/heap.hprof
adb pull /sdcard/heap.hprof ~/Desktop/
# 查看帧率(需要开发者选项开启 GPU 分析)
adb shell dumpsys gfxinfo com.example.app
# 查看电池消耗
adb shell dumpsys batterystats com.example.app
# 重置电池统计数据
adb shell dumpsys batterystats --reset
# 查看 CPU 使用率
adb shell dumpsys cpuinfo
# 使用 top 查看实时 CPU
adb shell top -m 10
# 查看正在运行的服务
adb shell dumpsys activity services
# 查看 Activity 栈
adb shell dumpsys activity activities
3.16 快速调试技巧
bash
# 清除应用数据并重新启动
adb shell pm clear com.example.app && adb shell am start -n com.example.app/.MainActivity
# 查看当前 Activity(快速获取当前界面)
adb shell dumpsys activity top | grep ACTIVITY
# 强制停止并重启应用
adb shell am force-stop com.example.app && sleep 1 && adb shell am start -n com.example.app/.MainActivity
# 模拟杀进程后恢复(测试数据持久化)
adb shell am kill com.example.app
# 查看应用启动时间
adb shell am start -W -n com.example.app/.MainActivity
# 测量冷启动时间
adb shell am force-stop com.example.app
adb shell am start -W -n com.example.app/.MainActivity | grep TotalTime
3.17 Fastboot 模式命令
当设备处于 Bootloader/Fastboot 模式时,使用 fastboot 命令:
bash
# 查看 fastboot 设备
fastboot devices
# 解锁 Bootloader(会清除数据!)
fastboot oem unlock
fastboot flashing unlock
# 锁定 Bootloader
fastboot oem lock
fastboot flashing lock
# 刷入分区镜像
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img
# 刷入完整 ROM(所有分区)
fastboot flashall
# 擦除分区
fastboot erase userdata
fastboot erase cache
# 格式化分区
fastboot format userdata
# 启动临时镜像(不刷入)
fastboot boot recovery.img
# 重启设备
fastboot reboot
fastboot reboot recovery
fastboot reboot bootloader
# 获取设备信息
fastboot getvar all
4. 常见问题排查
4.1 设备无法识别
bash
# 1. 检查 ADB 服务器是否运行
adb start-server
# 2. 检查设备是否授权(手机上是否弹出允许调试的对话框)
adb devices
# 如果显示 unauthorized,需要在手机上点击允许
# 3. 重新插拔 USB 或更换接口/线缆
# 4. 检查设备管理器(Windows)或系统信息(Mac)中设备是否正常识别
# 5. 尝试切换 USB 连接模式(文件传输/MTP 模式)
4.2 权限被拒绝(Permission Denied)
bash
# 某些目录需要 root 权限
adb shell
su # 获取 root 权限(设备需要已root)
cd /data/data # 现在可以访问了
# 如果无法 root,可以使用 run-as(仅限 debug 签名的应用)
run-as com.example.app
4.3 端口被占用
bash
# ADB 默认使用 5037 端口
# Windows:查找并结束占用进程
netstat -ano | findstr 5037
taskkill /PID <进程ID> /F
# macOS/Linux
lsof -i :5037
kill -9 <进程ID>
# 然后重启 ADB 服务器
adb kill-server
adb start-server
4.4 离线设备(offline)
bash
# 1. 重启 ADB 服务器
adb kill-server
adb start-server
# 2. 重新插拔设备
# 3. 检查设备 USB 调试是否开启
# 4. 尝试切换网络模式再切换回来
adb tcpip 5555
adb usb
4.5 连接超时
bash
# 无线网络调试时可能超时
# 1. 确保设备和电脑在同一网络
# 2. 防火墙允许 ADB 端口(5037)
# 3. 重新连接
adb disconnect
adb connect 192.168.x.x:5555
5. 最佳实践
5.1 效率技巧
bash
# 1. 在 ~/.bashrc 或 ~/.zshrc 中添加别名
alias adbd='adb devices'
alias adbs='adb shell'
alias adbl='adb logcat'
alias adbi='adb install -r'
alias adbu='adb uninstall'
# 2. 使用 grep 过滤日志
adb logcat | grep "MyAppTag"
# 3. 将常用命令写成脚本
# 例如:logcat.sh
#!/bin/bash
adb logcat -c
adb logcat -v threadtime | tee "log_$(date +%Y%m%d_%H%M%S).txt"
# 4. 使用 Android Studio 的 Logcat 工具进行图形化过滤
5.2 安全注意事项
- 不要随意外借开启了 USB 调试的设备 --- 他人可能通过 ADB 获取你的数据
- 公共场合关闭 USB 调试 --- 防止恶意充电站攻击
- 使用无线网络调试时注意网络安全 --- 确保在可信任的 WiFi 下使用
- 生产环境应用移除调试信息 --- 发布前关闭日志输出或降低日志级别
- 谨慎执行 adb shell 命令 --- 错误的命令可能导致数据丢失
5.3 开发调试流程建议
1. 连接设备
adb devices
2. 安装/更新应用
adb install -r app.apk
3. 清除旧日志
adb logcat -c
4. 打开日志监听(新开终端)
adb logcat -s MyAppTag:D
5. 启动应用测试
adb shell am start -n com.example.app/.MainActivity
6. 遇到问题保存日志
adb logcat -d > bug_report.txt
7. 截图/录屏保存现场
adb exec-out screencap -p > screenshot.png
8. 导出数据库排查(如需要)
adb exec-out run-as com.example.app cat databases/app.db > app.db
附录:常用命令速查表
| 功能 | 命令 |
|---|---|
| 查看设备 | adb devices -l |
| 安装应用 | adb install -r app.apk |
| 卸载应用 | adb uninstall com.example.app |
| 进入 Shell | adb shell |
| 查看日志 | adb logcat -s TAG:D |
| 推送文件 | adb push local /device/path |
| 拉取文件 | adb pull /device/path local |
| 截图 | adb exec-out screencap -p > img.png |
| 录屏 | adb shell screenrecord /sdcard/v.mp4 |
| 点击屏幕 | adb shell input tap x y |
| 滑动屏幕 | adb shell input swipe x1 y1 x2 y2 |
| 按键 | adb shell input keyevent 4 |
| 启动 Activity | adb shell am start -n pkg/.Activity |
| 强制停止 | adb shell am force-stop pkg |
| 清除数据 | adb shell pm clear pkg |
| 端口转发 | adb forward tcp:local tcp:device |
| 重启设备 | adb reboot |
| 重启 Recovery | adb reboot recovery |
| 重启 Bootloader | adb reboot bootloader |
| 网络连接 | adb connect IP:5555 |
| 断开网络 | adb disconnect IP:5555 |
文档版本 :v1.0
最后更新 :2026-04-29
适用平台 :Windows / macOS / Linux
适用 Android 版本:Android 4.0+