什么是 ADB?
ADB 是 Android Debug Bridge 的缩写,它是一个命令行工具,充当了电脑和 Android 设备(或模拟器)之间的桥梁,允许你与设备进行通信。
一、基础连接与设备管理
这些命令是使用 ADB 的基础。
| 命令 | 描述 |
|---|---|
adb devices |
列出所有已连接的设备/模拟器。 这是最常用的命令,用于检查连接状态。 |
adb devices -l |
列出设备的详细信息(包括设备型号)。 |
adb connect <ip:port> |
通过网络连接设备(需要设备开启网络调试)。例如:adb connect 192.168.1.100:5555 |
adb disconnect <ip:port> |
断开网络连接。 |
adb kill-server |
终止 ADB 服务。 |
adb start-server |
启动 ADB 服务。通常不需要手动执行,adb devices 会自动触发。 |
adb wait-for-device |
阻塞命令,直到设备变为在线状态。在脚本中很有用。 |
adb -s <device_serial> <command> |
指定设备执行命令。 当连接了多个设备时使用。例如:adb -s emulator-5554 install app.apk |
adb -d <command> |
指定唯一的物理设备执行命令(如果同时有设备和模拟器)。 |
adb -e <command> |
指定唯一的模拟器执行命令。 |
二、应用管理
安装、卸载和管理应用程序。
| 命令 | 描述 |
|---|---|
adb install <path_to_apk> |
安装应用。 |
adb install -r <path_to_apk> |
覆盖安装,保留数据。 |
adb install -s |
将应用安装到 SD 卡(如果支持)。 |
adb install -d |
允许版本降级安装。 |
adb uninstall <package_name> |
卸载应用。例如:adb uninstall com.example.app |
adb uninstall -k <package_name> |
卸载应用但保留数据和缓存。 |
adb shell pm list packages |
列出设备上所有应用的包名。 |
adb shell pm list packages -3 |
只列出第三方应用。 |
adb shell pm list packages -s |
只列出系统应用。 |
adb shell pm list packages -f |
列出包名及其对应的 APK 路径。 |
adb shell pm path <package_name> |
列出指定 APK 的安装路径。 |
adb shell pm clear <package_name> |
清除指定应用的数据和缓存。 |
adb shell am force-stop <package_name> |
强制停止一个应用。 |
三、文件操作
在电脑和设备之间传输文件。
| 命令 | 描述 |
|---|---|
adb push <local> <remote> |
将电脑文件/文件夹复制到设备。 例如:adb push ./photo.jpg /sdcard/ |
adb pull <remote> <local> |
将设备文件/文件夹复制到电脑。 例如:adb pull /sdcard/photo.jpg ./ |
adb shell ls <path> |
列出设备上的文件和目录。 |
adb shell cd <path> |
切换设备上的目录。 |
adb shell rm <file_path> |
删除设备上的文件。 |
adb shell rm -r <dir_path> |
递归删除设备上的目录。 |
adb shell mkdir <path> |
在设备上创建目录。 |
四、日志与系统信息
查看日志、系统属性和状态。
| 命令 | 描述 |
|---|---|
adb logcat |
打印系统日志。 会持续输出。 |
adb logcat -c |
清除日志缓冲区。 |
adb logcat -v time |
打印带时间的日志。 |
adb logcat -s <tag> |
过滤指定 TAG 的日志。例如:adb logcat -s MyApp |
adb logcat -b main |
查看主日志缓冲区(默认)。 |
adb logcat -b radio |
查看射频、电话相关的日志。 |
adb logcat -b events |
查看系统事件日志。 |
adb logcat > log.txt |
将日志输出到电脑的 log.txt 文件。 |
adb bugreport |
生成一个非常详细的 Bug 报告,包含日志、堆栈跟踪、系统状态等。 |
adb shell dumpsys |
打印所有系统服务信息。 信息量巨大。 |
adb shell dumpsys <service> |
打印特定服务的信息。常用服务见下表。 |
adb shell getprop |
获取所有系统属性。 |
adb shell getprop <key> |
获取特定系统属性。例如:adb shell getprop ro.build.version.sdk |
adb shell wm size |
显示屏幕物理分辨率。 |
adb shell wm density |
显示屏幕密度。 |
常用 dumpsys 服务:
| 服务名 | 描述 |
|---|---|
adb shell dumpsys activity |
活动(Activity)和任务栈信息。 |
adb shell dumpsys window |
窗口信息,包含 mSurface 等。 |
adb shell dumpsys cpuinfo |
CPU 使用信息。 |
adb shell dumpsys meminfo <package_name> |
查看指定应用的内存使用情况。 |
adb shell dumpsys battery |
电池状态信息。 |
adb shell dumpsys power |
电源管理信息。 |
adb shell dumpsys notification |
通知信息。 |
adb shell dumpsys package <package_name> |
指定包的详细信息。 |
五、脚本与输入模拟
自动化操作和模拟用户输入。
| 命令 | 描述 |
|---|---|
adb shell input keyevent <keycode> |
模拟按键事件。 常用键码见下表。 |
adb shell input text "<string>" |
模拟输入文本。 注意:不支持中文。 |
adb shell input tap <x> <y> |
模拟触摸点击。 |
adb shell input swipe <x1> <y1> <x2> <y2> |
模拟滑动。 |
adb shell input swipe <x1> <y1> <x2> <y2> <ms> |
模拟滑动,并指定持续时间(毫秒)。 |
adb shell screencap -p <path> |
截屏并保存到设备。 例如:adb shell screencap -p /sdcard/screen.png |
adb exec-out screencap -p > screen.png |
截屏并直接保存到电脑。 |
adb shell screenrecord <path> |
录屏(Android 4.4+), 保存到设备。按 Ctrl+C 停止。 |
adb shell uiautomator dump |
获取当前界面的 UI 布局(XML 格式)。 |
常用 Keycode(键码):
android adb 指令大全
好的,这是一份非常全面的 Android ADB 指令大全,涵盖了从基础到高级的常用命令。ADB 是 Android 调试的瑞士军刀,掌握它能极大地提升开发和测试效率。
什么是 ADB?
ADB 是 Android Debug Bridge 的缩写,它是一个命令行工具,充当了电脑和 Android 设备(或模拟器)之间的桥梁,允许你与设备进行通信。
一、基础连接与设备管理
这些命令是使用 ADB 的基础。
| 命令 | 描述 |
|---|---|
adb devices |
列出所有已连接的设备/模拟器。 这是最常用的命令,用于检查连接状态。 |
adb devices -l |
列出设备的详细信息(包括设备型号)。 |
adb connect <ip:port> |
通过网络连接设备(需要设备开启网络调试)。例如:adb connect 192.168.1.100:5555 |
adb disconnect <ip:port> |
断开网络连接。 |
adb kill-server |
终止 ADB 服务。 |
adb start-server |
启动 ADB 服务。通常不需要手动执行,adb devices 会自动触发。 |
adb wait-for-device |
阻塞命令,直到设备变为在线状态。在脚本中很有用。 |
adb -s <device_serial> <command> |
指定设备执行命令。 当连接了多个设备时使用。例如:adb -s emulator-5554 install app.apk |
adb -d <command> |
指定唯一的物理设备执行命令(如果同时有设备和模拟器)。 |
adb -e <command> |
指定唯一的模拟器执行命令。 |
二、应用管理
安装、卸载和管理应用程序。
| 命令 | 描述 |
|---|---|
adb install <path_to_apk> |
安装应用。 |
adb install -r <path_to_apk> |
覆盖安装,保留数据。 |
adb install -s |
将应用安装到 SD 卡(如果支持)。 |
adb install -d |
允许版本降级安装。 |
adb uninstall <package_name> |
卸载应用。例如:adb uninstall com.example.app |
adb uninstall -k <package_name> |
卸载应用但保留数据和缓存。 |
adb shell pm list packages |
列出设备上所有应用的包名。 |
adb shell pm list packages -3 |
只列出第三方应用。 |
adb shell pm list packages -s |
只列出系统应用。 |
adb shell pm list packages -f |
列出包名及其对应的 APK 路径。 |
adb shell pm path <package_name> |
列出指定 APK 的安装路径。 |
adb shell pm clear <package_name> |
清除指定应用的数据和缓存。 |
adb shell am force-stop <package_name> |
强制停止一个应用。 |
三、文件操作
在电脑和设备之间传输文件。
| 命令 | 描述 |
|---|---|
adb push <local> <remote> |
将电脑文件/文件夹复制到设备。 例如:adb push ./photo.jpg /sdcard/ |
adb pull <remote> <local> |
将设备文件/文件夹复制到电脑。 例如:adb pull /sdcard/photo.jpg ./ |
adb shell ls <path> |
列出设备上的文件和目录。 |
adb shell cd <path> |
切换设备上的目录。 |
adb shell rm <file_path> |
删除设备上的文件。 |
adb shell rm -r <dir_path> |
递归删除设备上的目录。 |
adb shell mkdir <path> |
在设备上创建目录。 |
四、日志与系统信息
查看日志、系统属性和状态。
| 命令 | 描述 |
|---|---|
adb logcat |
打印系统日志。 会持续输出。 |
adb logcat -c |
清除日志缓冲区。 |
adb logcat -v time |
打印带时间的日志。 |
adb logcat -s <tag> |
过滤指定 TAG 的日志。例如:adb logcat -s MyApp |
adb logcat -b main |
查看主日志缓冲区(默认)。 |
adb logcat -b radio |
查看射频、电话相关的日志。 |
adb logcat -b events |
查看系统事件日志。 |
adb logcat > log.txt |
将日志输出到电脑的 log.txt 文件。 |
adb bugreport |
生成一个非常详细的 Bug 报告,包含日志、堆栈跟踪、系统状态等。 |
adb shell dumpsys |
打印所有系统服务信息。 信息量巨大。 |
adb shell dumpsys <service> |
打印特定服务的信息。常用服务见下表。 |
adb shell getprop |
获取所有系统属性。 |
adb shell getprop <key> |
获取特定系统属性。例如:adb shell getprop ro.build.version.sdk |
adb shell wm size |
显示屏幕物理分辨率。 |
adb shell wm density |
显示屏幕密度。 |
常用 dumpsys 服务:
| 服务名 | 描述 |
|---|---|
adb shell dumpsys activity |
活动(Activity)和任务栈信息。 |
adb shell dumpsys window |
窗口信息,包含 mSurface 等。 |
adb shell dumpsys cpuinfo |
CPU 使用信息。 |
adb shell dumpsys meminfo <package_name> |
查看指定应用的内存使用情况。 |
adb shell dumpsys battery |
电池状态信息。 |
adb shell dumpsys power |
电源管理信息。 |
adb shell dumpsys notification |
通知信息。 |
adb shell dumpsys package <package_name> |
指定包的详细信息。 |
五、脚本与输入模拟
自动化操作和模拟用户输入。
| 命令 | 描述 |
|---|---|
adb shell input keyevent <keycode> |
模拟按键事件。 常用键码见下表。 |
adb shell input text "<string>" |
模拟输入文本。 注意:不支持中文。 |
adb shell input tap <x> <y> |
模拟触摸点击。 |
adb shell input swipe <x1> <y1> <x2> <y2> |
模拟滑动。 |
adb shell input swipe <x1> <y1> <x2> <y2> <ms> |
模拟滑动,并指定持续时间(毫秒)。 |
adb shell screencap -p <path> |
截屏并保存到设备。 例如:adb shell screencap -p /sdcard/screen.png |
adb exec-out screencap -p > screen.png |
截屏并直接保存到电脑。 |
adb shell screenrecord <path> |
录屏(Android 4.4+), 保存到设备。按 Ctrl+C 停止。 |
adb shell uiautomator dump |
获取当前界面的 UI 布局(XML 格式)。 |
常用 Keycode(键码):
| 键码 | 含义 |
|---|---|
3 |
HOME 键 |
4 |
BACK 键 |
5 |
拨号 |
6 |
挂断 |
24 |
音量+ |
25 |
音量- |
26 |
电源键 |
27 |
相机 |
66 |
回车键 |
82 |
菜单键 |
187 |
应用切换(最近任务) |
220 |
降低屏幕亮度 |
221 |
提高屏幕亮度 |
六、网络与端口转发
| 命令 | 描述 |
|---|---|
adb shell netstat |
显示网络连接状态。 |
adb shell ping <host> |
Ping 一个主机。 |
adb shell ifconfig |
查看网络接口配置(可能需要 root)。 |
adb shell netcfg |
查看网络状态。 |
adb forward tcp:<local_port> tcp:<device_port> |
将本地端口转发到设备端口。 |
adb forward tcp:<local_port> jwdp:<pid> |
转发用于 Chrome 远程调试。 |
adb reverse tcp:<device_port> tcp:<local_port> |
将设备端口反向代理到本地端口。 (Android 5.0+) |
七、高级与调试命令
| 命令 | 描述 |
|---|---|
adb shell |
进入设备的 Linux Shell 环境。 |
adb shell am start -n <package>/<activity> |
启动一个 Activity。 例如:adb shell am start -n com.android.settings/.Settings |
adb shell am start -a <action> |
通过 Intent Action 启动。例如:adb shell am start -a android.intent.action.VIEW -d "http://www.google.com" |
adb reboot |
重启设备。 |
adb reboot bootloader |
重启到 Bootloader 模式(Fastboot 模式)。 |
adb reboot recovery |
重启到 Recovery 模式。 |
adb root |
以 root 权限重启 ADB 守护进程。 (需要已 root 的系统或工程机) |
adb unroot |
退出 root 模式。 |
adb remount |
重新挂载 /system 分区为可写(需要 root)。 |
adb sideload <ota_package.zip> |
在 Recovery 模式下刷入 OTA 更新包。 |
adb backup -all -apk -shared -f backup.ab |
备份系统数据(已不推荐使用)。 |
adb restore backup.ab |
从备份文件恢复数据。 |
实用技巧与组合命令
-
过滤日志
# 查找包含 "Exception" 的日志 adb logcat | grep "Exception" # 在 Windows 上使用 findstr adb logcat | findstr "Exception" -
一键安装并启动应用
adb install app.apk && adb shell am start -n com.example.app/.MainActivity -
清除数据并启动应用(用于测试)
adb shell pm clear com.example.app && adb shell am start -n com.example.app/.MainActivity -
快速截屏并传到电脑
adb exec-out screencap -p > screenshot_$(date +%Y%m%d_%H%M%S).png -
查看当前前台 Activity
adb shell dumpsys activity activities | grep "mResumedActivity"