Skip to content

ADB命令

一、基础与全局 - 服务、设备状态与通用操作

命令名称描述示例 (Example)
adb version显示 adb 客户端版本号输出:Android Debug Bridge version 1.0.41
adb help显示 adb 帮助信息adb help ] adb-help.txt
adb devices列出已连接设备及其状态(device/offline)输出:List of devices attached / emulator-5554 device
adb devices -l列出设备并显示限定符(型号/传输方式)信息输出:emulator-5554 device product:sdk_gphone64 model:Pixel_6
adb get-serialno获取当前设备的序列号输出:emulator-5554
adb get-state获取设备状态:device、offline 或 unknown输出:device(其他可能值:offline / bootloader)
adb wait-for-device阻塞等待设备上线后再执行后续命令adb wait-for-device shell getprop sys.boot_completed
adb start-server启动 adb 后台服务进程输出:daemon started successfully
adb kill-server停止 adb 后台服务进程adb kill-server && adb start-server
adb reconnect重新连接所有设备输出:reconnecting emulator-5554 [device]
adb reconnect device重新连接当前设备输出:done(由设备端主动断开重连)
adb reconnect offline重置所有离线设备连接输出:reconnecting offline devices
adb status-window连续输出设备连接状态变化输出:state: device(持续刷新直到手动中断)
adb keygen [file]生成 adb 公钥/私钥对(公钥自动存为 [file].pub)adb keygen my_adbkey
adb get-devpath输出当前设备的设备路径(device path)输出:usb:1-3(无法获取时输出 unknown)
adb pair [host]:[port] [[code]]通过无线方式配对设备(Android 11+)adb pair 192.168.1.10:37105 123456

二、网络连接 - Wi-Fi、TCP/IP 与无线调试

命令名称描述示例 (Example)
adb connect [host]:[port]通过 TCP/IP 连接指定设备adb connect 192.168.1.10:5555
adb disconnect断开所有 TCP/IP 连接输出:disconnected everything
adb disconnect [host]:[port]断开指定的 TCP/IP 连接adb disconnect 192.168.1.10:5555
adb usb切换回 USB 连接模式输出:restarting in USB mode
adb tcpip [port]重启 adbd 并监听指定 TCP 端口(需先 USB 连接)adb tcpip 5555
adb forward [local] [remote]建立端口转发(如 tcp:6100 tcp:7100)adb forward tcp:8080 tcp:8080
adb forward --list列出当前所有端口转发规则输出:emulator-5554 tcp:8080 tcp:8080
adb forward --remove [local]移除指定的端口转发adb forward --remove tcp:8080
adb forward --remove-all移除所有端口转发adb forward --remove-all && adb forward --list
adb reverse [remote] [local]建立反向端口转发(设备访问电脑端口)adb reverse tcp:3000 tcp:3000
adb reverse --list列出当前所有反向端口转发输出:(reverse) tcp:3000 tcp:3000
adb reverse --remove [remote]移除指定的反向端口转发adb reverse --remove tcp:3000
adb reverse --remove-all移除所有反向端口转发adb reverse --remove-all && adb reverse --list
adb ppp [tty] [[params]]通过 USB 建立 PPP 拨号连接adb ppp dev:/dev/omap_csmi_tty1 nodetach

三、应用管理 - 安装、卸载、启动与权限

命令名称描述示例 (Example)
adb install [apk] 注意安装 APK 到设备adb install app-debug.apk
adb install -r [apk] 注意覆盖安装并保留应用数据adb install -r app-release.apk
adb install -t [apk] 注意允许安装测试包(testOnly)adb install -t app-debug.apk
adb install -d [apk] 注意允许降级安装到更低版本adb install -d app-v1.0.apk
adb install -g [apk] 注意安装并自动授予所有运行时权限adb install -g app-debug.apk
adb install -l [apk] 注意以 forward lock(转发锁定)方式安装,旧特性,新版 Android 已废弃adb install -l app-debug.apk
adb install-multiple [a1] [a2] ... 注意安装 split APK(多 APK 组合)adb install-multiple base.apk split_config.arm64_v8a.apk
adb uninstall [pkg] 高危卸载指定包名的应用adb uninstall com.example.demo
adb uninstall -k [pkg] 高危卸载但保留应用数据与缓存adb uninstall -k com.example.demo
adb shell pm list packages列出设备上的全部应用包名adb shell pm list packages -e
adb shell pm list packages -s仅列出系统应用输出:package:com.android.settings
adb shell pm list packages -3仅列出第三方应用输出:package:com.tencent.mm
adb shell pm list packages [filter]按关键字过滤包名adb shell pm list packages tencent
adb shell pm list packages -f显示包名及其 APK 安装路径输出:package:/data/app/~~xx==/base.apk=com.example.demo
adb shell pm path [pkg]显示指定应用的 APK 路径adb shell pm path com.tencent.mm
adb shell pm dump [pkg]输出指定应用的详细信息adb shell pm dump com.example.demo
adb shell pm clear [pkg] 高危清除应用数据与缓存(应用回到初装状态)adb shell pm clear com.example.demo
adb shell pm enable [pkg] 注意启用应用或组件adb shell pm enable com.example.demo
adb shell pm disable [pkg] 高危禁用应用或组件(需 root;非 root 请改用 disable-user)adb shell su -c 'pm disable com.example.demo'
adb shell pm disable-user [pkg] 高危为指定用户禁用应用(免 root,图标消失、数据保留)adb shell pm disable-user --user 0 com.android.browser
adb shell pm grant [pkg] [perm] 注意授予应用某权限(如 android.permission.CAMERA)adb shell pm grant com.example.demo android.permission.CAMERA
adb shell pm revoke [pkg] [perm] 高危撤销应用的某权限adb shell pm revoke com.example.demo android.permission.CAMERA
adb shell pm uninstall [pkg] 高危在 shell 内卸载应用adb shell pm uninstall com.example.demo
adb shell pm install -r [apk]在 shell 内覆盖安装应用adb shell pm install -r /data/local/tmp/app.apk
adb shell pm set-install-location [loc] 注意设置默认安装位置(0 自动/1 内部/2 外部)adb shell pm set-install-location 2
adb shell pm get-install-location获取当前默认安装位置输出:0[auto](1=internal,2=external)

四、文件传输 - push / pull 与设备文件操作

命令名称描述示例 (Example)
adb push [local] [remote]从电脑推送文件/目录到设备adb push demo.mp4 /sdcard/Movies/
adb pull [remote]从设备拉取文件到电脑当前目录adb pull /sdcard/shot.png
adb pull [remote] [local]从设备拉取文件到指定本地路径adb pull /sdcard/shot.png D:\temp\
adb shell ls列出目录内容adb shell ls /sdcard/Download
adb shell ls -l详细列表(含权限、所有者、大小)adb shell ls -l /sdcard/DCIM/Camera
adb shell cd [path]切换工作目录(仅在同一条 shell 命令内有效)adb shell 'cd /sdcard/Download; ls'
adb shell pwd显示当前工作目录输出:/(adb shell 默认工作目录为根目录)
adb shell cp [src] [dst]复制文件或目录adb shell cp /sdcard/a.txt /sdcard/b.txt
adb shell mv [src] [dst]移动或重命名文件adb shell mv /sdcard/a.txt /sdcard/Download/
adb shell rm [path] 高危删除文件adb shell rm /sdcard/shot.png
adb shell rm -r [path] 高危递归删除目录及其内容adb shell rm -r /sdcard/temp
adb shell mkdir [path]创建目录adb shell mkdir /sdcard/temp
adb shell touch [file]创建空文件或更新时间戳adb shell touch /sdcard/test.txt
adb shell cat [file]查看文件文本内容adb shell cat /proc/cpuinfo
adb shell echo [text]输出文本;写入设备文件须给整条命令加引号adb shell "echo hello ] /sdcard/a.txt"
adb shell find [path] -name [pattern]按名称查找文件adb shell find /sdcard -name '*.apk'
adb shell chmod [mode] [file] 注意修改文件权限位adb shell chmod 755 /data/local/tmp/run.sh
adb shell chown [user]:[group] [file] 注意修改文件所有者(需 root)adb shell su -c 'chown shell:shell /data/local/tmp/run.sh'
adb shell df显示磁盘分区使用量adb shell df -h /data
adb shell du [path]显示目录占用的空间大小adb shell du -sh /sdcard/Download

五、截屏与录屏 - 屏幕抓取与视频录制

命令名称描述示例 (Example)
adb shell screencap [file]截取屏幕并保存到设备(如 /sdcard/sc.png)adb shell screencap /sdcard/shot.png
adb exec-out screencap -p ] shot.png截屏并直接保存到电脑(不写设备存储)adb exec-out screencap -p ] D:\screen_01.png
adb shell screenrecord [file]录屏保存为 mp4(默认最长 3 分钟)adb shell screenrecord /sdcard/demo.mp4
adb shell screenrecord --time-limit [s] [file]指定录屏时长(秒)adb shell screenrecord --time-limit 30 /sdcard/demo.mp4
adb shell screenrecord --size 1280x720 [file]指定录屏分辨率adb shell screenrecord --size 1280x720 /sdcard/demo.mp4
adb shell screenrecord --bit-rate 6000000 [file]指定录屏码率(bps)adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
adb shell screenrecord --bugreport [file]录屏同时附加错误报告数据adb shell screenrecord --bugreport /sdcard/demo.mp4

六、输入与模拟 - 按键、文本与手势模拟

命令名称描述示例 (Example)
adb shell input tap [x] [y] 注意模拟点击屏幕坐标adb shell input tap 540 1200
adb shell input swipe [x1] [y1] [x2] [y2] 注意模拟从一点滑动到另一点adb shell input swipe 540 1600 540 400
adb shell input swipe [x1] [y1] [x2] [y2] [ms] 注意模拟长按(指定持续时间毫秒)adb shell input swipe 540 1600 540 400 300
adb shell input text [text] 注意输入文本(不支持中文,需 ASCII)adb shell input text hello123
adb shell input keyevent [code] 注意发送按键事件(可用数字码或 KEYCODE 常量)adb shell input keyevent 26
adb shell input keyevent KEYCODE_HOME模拟按下 HOME 键说明:等价于 adb shell input keyevent 3
adb shell input keyevent KEYCODE_BACK模拟按下返回键说明:等价于 adb shell input keyevent 4
adb shell input keyevent KEYCODE_POWER 注意模拟按下电源键说明:等价于 adb shell input keyevent 26
adb shell input keyevent KEYCODE_VOLUME_UP模拟音量加说明:等价于 adb shell input keyevent 24
adb shell input keyevent KEYCODE_VOLUME_DOWN模拟音量减说明:等价于 adb shell input keyevent 25
adb shell input roll [dx] [dy] 注意模拟轨迹球滚动adb shell input roll 0 -50
adb shell input draganddrop [x1] [y1] [x2] [y2] [ms] 注意模拟拖放操作adb shell input draganddrop 300 800 700 800 500
adb shell getevent实时输出输入设备的原始事件adb shell getevent /dev/input/event2
adb shell getevent -l以可读标签形式输出输入事件输出:EV_KEY KEY_POWER DOWN

七、进程与系统 - 进程、CPU、内存与系统属性

命令名称描述示例 (Example)
adb shell ps列出进程(默认仅当前 shell 用户的进程)说明:默认看不到应用进程,需用 ps -A
adb shell ps -A列出系统全部进程adb shell "ps -A | grep u0_a"
adb shell top实时显示进程 CPU/内存占用adb shell top -n 1
adb shell kill [pid]结束指定 PID 的进程adb shell kill 12345
adb shell am start -n [pkg]/[act]启动指定应用的 Activityadb shell am start -n com.example.demo/.MainActivity
adb shell am start -a [action] -d [data]通过 Intent 动作与数据启动(如打开网址)adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com
adb shell am start -W [pkg]/[act]启动 Activity 并等待其启动完成adb shell am start -W com.example.demo/.MainActivity
adb shell am startservice 注意启动 Service(Android 8+ 受后台限制,前台服务用 am start-foreground-service)adb shell am startservice -n com.example.demo/.SyncService
adb shell am broadcast -a [action] 注意发送广播(可带额外参数)adb shell am broadcast -a com.example.ACTION_SYNC
adb shell am force-stop [pkg] 注意强制停止指定应用adb shell am force-stop com.tencent.mm
adb shell am kill [pkg] 注意结束应用的后台进程adb shell am kill com.example.demo
adb shell am kill-all 注意结束所有后台进程说明:仅杀后台进程,前台应用不受影响
adb shell am restart 注意软重启用户空间(重启 zygote 及全部应用进程,需 root)adb shell su -c 'am restart'
adb shell am force-stop com.android.systemui 高危重启系统界面 SystemUI(状态栏/导航栏,免 root)说明:SystemUI 为常驻应用,杀掉后由系统自动拉起,状态栏会闪一下

八、日志与调试 - logcat 与实时调试信息

命令名称描述示例 (Example)
adb logcat实时输出系统日志adb logcat ] logcat.txt
adb logcat -c清除日志缓冲区adb logcat -c && adb logcat
adb logcat -d转储当前日志后退出adb logcat -d ] snapshot.txt
adb logcat *:E仅显示 Error 及以上级别日志adb logcat *:E -v time
adb logcat -s [tag]按标签(tag)过滤日志adb logcat -s MyTag
adb logcat -v time显示带时间戳的日志adb logcat -v threadtime
adb logcat -f [file]将日志输出到设备文件adb logcat -f /sdcard/log.txt
adb bugreport生成完整的系统 bug 报告(zip 包)adb bugreport bugreport.zip
adb shell dumpsys转储所有系统服务的状态信息adb shell dumpsys ] dumpsys.txt
adb shell dumpsys battery查看电池与充电信息adb shell "dumpsys battery | grep level"
adb shell dumpsys meminfo [pkg]查看指定应用的内存占用adb shell dumpsys meminfo com.tencent.mm
adb shell dumpsys activity top查看当前栈顶的 Activityadb shell "dumpsys activity top | grep ACTIVITY"
adb shell dumpsys package [pkg]查看应用的包信息adb shell dumpsys package com.example.demo
adb shell service list列出系统可用的服务adb shell "service list | grep window"
adb shell getprop列出全部系统属性adb shell "getprop | grep product"
adb shell getprop [key]读取指定的系统属性adb shell getprop ro.product.model
adb shell getprop ro.build.version.release读取 Android 系统版本号输出:14(即 Android 14)
adb shell setprop [key] [value] 高危设置系统属性(重启后失效;多数系统属性需 root)adb shell setprop log.tag.MyTag DEBUG

九、设置与属性 - 系统设置与全局属性

命令名称描述示例 (Example)
adb shell settings list [namespace]列出设置项(system/global/secure)adb shell settings list system
adb shell settings get [namespace] [key]读取某项设置的值adb shell settings get system screen_brightness
adb shell settings put [namespace] [key] [value] 注意修改某项设置(如息屏时间、自动旋转)adb shell settings put system screen_brightness 200
adb shell settings delete [namespace] [key] 注意删除某项设置adb shell settings delete system screen_brightness
adb shell content query --uri [uri]查询 ContentProvider 中的数据adb shell content query --uri content://settings/system
adb shell content insert --uri [uri] ... 注意向 ContentProvider 插入数据adb shell content insert --uri content://settings/system --bind name:s:my_key --bind value:s:1
adb shell content delete --uri [uri] 高危从 ContentProvider 删除数据adb shell content delete --uri content://settings/system/my_key
adb shell uiautomator dump转储当前界面的 UI 层次结构(XML)adb shell uiautomator dump /sdcard/ui.xml
adb shell wm size显示当前屏幕分辨率输出:Physical size: 1080x2340(若曾改过分辨率会追加 Override size: 一行)
adb shell wm size 1080x1920 注意临时修改屏幕分辨率adb shell wm size reset
adb shell wm density显示当前屏幕 DPI输出:Physical density: 440(若曾改过 DPI 会追加 Override density: 一行)
adb shell wm density 480 注意临时修改屏幕 DPIadb shell wm density reset
adb shell wm overscan 0,0,0,0 注意设置/重置显示边距(Android 11 起已移除该命令)说明:Android 10 及以下可用;Android 11+ 返回 unknown command: overscan
adb shell cmd [svc] [args]调用系统服务命令(如 cmd wifi)adb shell cmd wifi status
adb shell cmd package list以 cmd 方式列出已安装包adb shell cmd package list packages -3

十、重启与刷写 - 重启、Recovery 与 Bootloader

命令名称描述示例 (Example)
adb reboot 注意正常重启设备adb -s emulator-5554 reboot
adb reboot userspace 注意软重启:只重启用户空间进程(init/zygote/应用),不重启内核 · Android 11~14说明:需 getprop init.userspace_reboot.is_supported 返回 1,否则命令失败;Android 15 起已移除该功能
adb reboot bootloader 高危重启到 Bootloader 模式adb reboot bootloader && fastboot devices
adb reboot recovery 高危重启到 Recovery 模式说明:进入后可用 adb sideload 侧载 OTA;返回系统执行 adb reboot
adb reboot sideload 高危重启到 Sideload(侧载)模式adb reboot sideload && adb sideload update.zip
adb reboot fastboot 高危重启到 Fastboot 模式(部分设备支持)说明:进入 fastbootd(用户空间 fastboot,可刷动态分区),与 bootloader 的 fastboot 不同
adb sideload [ota.zip] 高危在 recovery 中刷入 OTA 更新包adb sideload update-ota.zip

十一、备份与恢复(已弃用) - 已弃用的数据备份命令

命令名称描述示例 (Example)
adb backup -apk -all -f [file].ab备份全部应用及数据(Android 12+ 默认不再备份应用数据)adb backup -apk -all -f backup.ab
adb backup -apk -shared -f [file].ab备份含共享存储内容(Android 12+ 默认不再备份应用数据)adb backup -apk -shared -f full.ab
adb restore [file].ab 注意从备份文件恢复(Android 12+ 可备份内容已大幅受限)adb restore backup.ab

十二、高级调试 - root、remount 与底层调试

命令名称描述示例 (Example)
adb root 注意以 root 权限重启 adbd(仅 userdebug/eng 工程版或已 root 设备)输出:restarting adbd as root;零售正式版返回 adbd cannot run as root in production builds
adb unroot 注意把 adbd 退回普通 shell 权限(adb root 的反操作)输出:restarting adbd as non root
adb remount 高危将 /system、/vendor 等系统分区重新挂载为可读写(需先 adb root)adb root && adb remount
adb disable-verity 高危关闭 dm-verity 分区校验,让 remount 真正生效(需已解锁 Bootloader,重启后生效)adb root && adb disable-verity && adb reboot
adb enable-verity 注意重新开启 dm-verity 校验,恢复系统完整性保护(重启后生效)adb root && adb enable-verity && adb reboot
adb shell monkey -p [pkg] [count] 注意对应用进行随机压力测试(指定事件数)adb shell monkey -p com.example.demo 500
adb shell monkey -p [pkg] --throttle 500 1000 注意限速压力测试(每事件间隔 500ms)adb shell monkey -p com.example.demo --throttle 500 1000
adb jdwp列出支持 JDWP 调试的进程 PID输出:8899(当前可调试进程的 PID 列表)
adb forward tcp:12345 jdwp:[pid]将本地端口转发到 JDWP 进程以附加调试器adb forward tcp:12345 jdwp:8899
adb shell sqlite3 [db] [query] 高危直接对 SQLite 数据库执行查询(需权限/二进制)adb shell sqlite3 /data/data/com.example/databases/app.db '.tables'
adb shell am profile start [pkg] [file]启动方法性能分析并写入文件adb shell am profile start com.example.demo /sdcard/trace.trace
adb shell am profile stop [pkg]停止性能分析adb shell am profile stop com.example.demo
adb shell dumpsys gfxinfo [pkg]查看应用渲染性能(帧耗时)adb shell dumpsys gfxinfo com.example.demo
adb shell getevent -p列出输入设备及其支持的事件类型adb shell getevent -p /dev/input/event0

🔗

亲手创建自己所需的软件,是程序员的幸运。