ADB 命令
提示
ADB(Android Debug Bridge)是一个命令行工具,可与模拟器或连接的 Android 设备进行通信,可以下载 SDK Platform Tools (opens new window) 获取 ADB 工具。
# ADB Debugging
# adb kill-server
关闭 ADB 服务:
adb kill-server
# adb start-server
启动 ADB 服务:
adb start-server
# adb devices
查看连接设备:
adb devices
查看连接设备,-l
表示长输出:
adb devices -l
# adb forward
列出所有 socket 连接:
adb forward --list
设置端口转发,将计算机端口 6123 转发到 Android 设备端口 7123:
adb forward tcp:6123 tcp:7123
# adb forward [远程端协议:端口号] [设备端协议:端口号]
2
# 无线连接
# adb connect
Step 1:在电脑端指定 Android 设备的 TCP/IP 端口,断开 USB 与 Android 设备的连接:
adb tcpip 5555
Step 2:在“设置”>“关于手机”>“状态信息”>“IP 地址”中找到 Android 设备的 IP 地址,通过 Wi-Fi 连接到设备:
adb connect 192.168.1.184:5555
Step 3:确认已通过 Wi-Fi 连接到 Android 设备:
adb devices
# List of devices attached
# 192.168.1.184:5555 device
2
3
# adb usb
在USB模式下重新启动
adb usb
# APK 包管理
# adb install
将单个 APK 推送到设备并安装:
adb install spiderapi.cn.apk
将单个软件的多个 APK 推送到设备,然后当作一整个 apk 进行安装:
adb install-multiple spiderapi.cn.apk spiderapi.cn.arm64.apk
将单个软件的多个 APK 推送到设备,然后当作一整个 apk 以原子方式进行安装:
adb install-multi-package spiderapi.cn.apk spiderapi.cn.arm64.apk
替换现有应用程序,重新安装现有应用程序,保留其数据:
adb install -r spiderapi.cn.apk
允许测试包:
adb install -t spiderapi.cn.apk
允许 APK 进行降级安装,正常是不被允许:
adb install -d spiderapi.cn.apk
为应用程序授予所有运行时的权限:
adb install -g spiderapi.cn.apk
使应用程序作为临时安装应用程序安装:
adb install --instant spiderapi.cn.apk
使用快速部署:
adb install --fastdeploy spiderapi.cn.apk
允许将 apk 推送到设备并作为单独的步骤调用包管理器:
adb install --no-streaming spiderapi.cn.apk
# adb uninstall
卸载 app:
adb uninstall spiderapi.cn.apk
卸载 app 后保留数据和缓存目录:
adb uninstall -k spiderapi.cn.apk
# adb shell pm list packages
列出所有应用程序,包括系统应用和用户安装的应用:
adb shell pm list packages
列出所有应用程序包的包名以及其对应的文件路径(file):
adb shell pm list packages -f
列出所有(all)应用程序的详细信息,包括系统应用和用户安装的应用,但不包括 APXes(Android Pony EXpress):
adb shell pm list packages -a
仅列出 APEX 包:
adb shell pm list packages --apex-only
列出已经被禁用的(disabled)应用程序包:
adb shell pm list packages -d
列出已经被启用的(enabled)应用程序包:
adb shell pm list packages -e
列出系统自带的(system)应用程序包:
adb shell pm list packages -s
列出第三方(third party)应用程序包:
adb shell pm list packages -3
列出应用程序包的安装器信息(installer):
adb shell pm list packages -i
列出被忽略(ignored)(用于与旧版本的兼容)的应用程序包:
adb shell pm list packages -l
列出应用程序包的 UID:
adb shell pm list packages -U
仅列出指定 UID 的包:
adb shell pm list packages --uid UID
列出未安装的(uninstalled)应用程序包:
adb shell pm list packages -u
显示版本代码:
adb shell pm list packages --show-versioncode
仅列出属于指定用户的包:
adb shell pm list packages --user USER_ID
# adb shell pm path
查看某个安装包的路径:
adb shell pm path com.spiderapi.cn
# adb shell pm clear
删除与包相关的所有数据(app 的数据和缓存):
adb shell pm clear com.spiderapi.cn
# 文件管理
# adb pull
从 Android 设备复制文件、目录到 PC 端:
adb pull /mnt/sdcard/Download/spiderapi.apk spiderapi_pc.apk
- a
参数保持了文件的时间属性(不改变文件的“修改时间”等信息)
adb pull -a /mnt/sdcard/Download/spiderapi.apk spiderapi_pc.apk
# adb push
从 PC 端复制文件、目录到 Android 设备:
adb push spiderapi_pc.apk /mnt/sdcard/Download/spiderapi.apk
对 Android 设备上的文件进行更新,只有当 PC 端的文件日期比设备端的新,才会进行推送:
adb push --sync spiderapi_pc.apk /mnt/sdcard/Download/spiderapi.apk
# adb shell ls
列出文件和目录:
adb shell ls /system/bin
列出所有文件,包括隐藏文件(.hidden):
adb shell ls -a
列出目录,而不是内容:
adb shell ls -d
子目录中的递归列表:
adb shell ls -R /mnt/sdcard/Download
# adb shell cd
进入指定目录:
adb shell cd /mnt/sdcard/Download
# adb shell rm
删除(remove)文件:
adb shell rm /mnt/sdcard/Download/spiderapi.apk
强制(force)删除文件,即便文件不存在,也不会报错:
adb shell rm -f /mnt/sdcard/Download/spiderapi.apk
交互式(interactive),会提示确认删除:
adb shell rm -i /mnt/sdcard/Download/spiderapi.apk
递归(recursive)删除目录内容:
adb shell rm -rR /mnt/sdcard/Download
显示删除的文件或目录的名称、进展等信息(verbose):
adb shell rm -v /mnt/sdcard/Download/spiderapi.apk
# adb shell mkdir
创建目录:
adb shell mkdir /sdcard/tmp
创建目录并设置权限:
adb shell mkdir -m 777 /sdcard/tmp
根据需要自动创建父目录:
adb shell mkdir -p /sdcard/tmp/sub1/sub2
# adb shell touch
创建一个空文件,或者更新文件的访问和修改时间戳:
adb shell touch /mnt/sdcard/Download/spiderapi.txt
# adb shell pwd
打印当前工作目录路径:
adb shell pwd
# adb shell cp
复制(copy)文件和目录:
adb shell cp /sdcard/spiderapi.txt /sdcard/spiderbox.txt
# adb shell mv
将文件或目录从一个位置移动(move)到另一个位置:
adb shell mv /mnt/sdcard/Download/spiderapi.txt /mnt/sdcard/DCIM/spiderapi.txt
强制(force)执行移动操作,如果目标路径已经存在文件,它将被覆盖:
adb shell mv -f /mnt/sdcard/Download/spiderapi.txt /mnt/sdcard/DCIM/spiderapi.txt
交互式(interactive),可以在移动文件时进行确认:
adb shell mv -i /mnt/sdcard/Download/spiderapi.txt /mnt/sdcard/DCIM/spiderapi.txt
在移动文件时不要覆盖(No clobber)目标文件:
adb shell mv -n /mnt/sdcard/Download/spiderapi.txt /mnt/sdcard/DCIM/spiderapi.txt
# 网络相关
# adb shell netstat
显示网络信息(默认 netstat -tuwx
):
adb shell netstat
路由表(routing):
adb shell netstat -r
所有(all)的网络连接(包括正在监听的和已建立的连接):
adb shell netstat -a
所有正在监听(listening)的网络连接:
adb shell netstat -l
所有正在进行的 TCP 连接:
adb shell netstat -t
所有正在进行的 UDP 连接:
adb shell netstat -u
所有正在进行的 Raw 连接:
adb shell netstat -w
所有正在进行的 unix 连接:
adb shell netstat -x
显示扩展(extended)网络统计信息。这个命令的输出通常包括更多详细的网络统计数据,例如接收和发送的数据包数量、错误数量、丢失数量等:
adb shell netstat -e
显示地址和端口时禁用主机名解析:
adb shell netstat -n
显示与每个网络连接关联的进程(PID)信息,即显示哪个进程创建了这些连接:
adb shell netstat -p
# adb shell ping
ping(Packet Internet Groper)是一种网络管理实用程序,用于测试和诊断网络连接问题:
adb shell ping
指定发送 4 个 ICMP Echo 请求,并等待回应:
adb shell ping -c 4
指定等待接收时间,以毫秒为单位:
adb shell ping -W 200 127.0.0.1
设置发送每个 ICMP Echo 请求的间隔时间,以秒为单位,默认间隔为 1 秒:
adb shell ping -i 2 127.0.0.1
# adb shell netcfg/ifconfig
显示网络配置信息,在 Android M 或者更高版本中可能不存在此命令:/system/bin/sh: netcfg: not found
adb shell netcfg
显示或配置网络接口:
adb shell ifconfig
# adb shell ip
获取 wlan0(Wi-Fi)IP 地址:
adb shell ip addr show wlan0
查看路由表(route):
adb shell ip route
显示 ARP 缓存或邻居表的信息,ARP(Address Resolution Protocol)用于将 IP 地址解析为物理 MAC 地址,以便设备在本地网络上进行通信,邻居表包含了与本地设备通信的其他设备的 IP 地址和相应的 MAC 地址:
adb shell ip neighbour
# 日志相关
# adb logcat
打印日志信息:
adb logcat
最低优先级,捕获并显示所有日志消息(verbose):
adb logcat *:V
仅显示 Debug 级别日志:
adb logcat *:D
仅显示 Info 级别日志:
adb logcat *:I
仅显示 Warning 级别日志:
adb logcat *:W
仅显示 Error 级别日志:
adb logcat *:E
仅显示 Fatal 级别日志:
adb logcat *:F
最高优先级,不打印任何内容(silent):
adb logcat *:S
查看主要的系统日志,包括应用程序和系统组件的日志消息,这是默认的日志缓冲区:
adb logcat -b main
查看无线电(Radio)日志,其中包括与移动网络通信相关的信息,如电话、数据连接和基站信息:
adb logcat -b radio
查看事件(Events)日志,其中包括系统事件、广播事件和其他事件的日志消息:
adb logcat -b events
查看系统日志(system),包括系统服务和组件的日志消息:
adb logcat -b system
清除整个日志并退出:
adb logcat -c
一次性获取系统日志,一旦显示完毕,就不会继续捕获和显示后续的日志消息:
adb logcat -d
将日志输出到文件中:
adb logcat -f spiderapi.log
打印指定日志缓冲区的大小并退出:
adb logcat -g
设置日志的最大显示数量:
adb logcat -n <count>
按照每千字节输出日志:
adb logcat -r <kbytes>
设置输出日志的标签,只显示该标签的日志:
adb logcat -s
日志输出格式:日志等级/tag标签(进程ID): 日志信息
adb logcat -v brief
日志输出格式:时间 日志等级/tag标签(进程ID): 日志信息
adb logcat -v time
日志输出格式:时间 进程ID 线程ID 日志等级 tag标签: 日志信息
adb logcat -v threadtime
日志输出格式:日志等级(进程ID): 日志信息
adb logcat -v process
日志输出格式:日志等级/tag标签: 日志信息
adb logcat -v tag
日志输出格式:日志等级(进程ID:线程ID) 日志信息
adb logcat -v thread
日志输出格式:日志信息
adb logcat -v raw
日志输出格式:时间 日志等级/tag标签(进程ID):\n日志信息
adb logcat -v long
# adb shell dumpsys
获取系统服务的信息和状态:
adb shell dumpsys
列出设备上所有可用的系统服务和服务标识(Service Identifiers):
adb shell dumpsys -l
查看活动管理器信息:
adb shell dumpsys activity
查看电池状态信息:
adb shell dumpsys battery
查看窗口管理器信息:
adb shell dumpsys window
查看网络状态信息:
adb shell dumpsys netstats
查看传感器信息:
adb shell dumpsys sensorservice
# adb shell dumpstate
dumpstate 命令不适用于 Android 10
在 Android 设备上生成设备状态报告,报告为 txt 文件,这个命令会收集设备的各种信息和日志,包括系统日志、dumpsys 输出、活动管理器信息、内存信息、CPU 使用情况、网络状态等,并将它们保存到一个文件中以供后续分析和诊断使用:
adb shell dumpstate
与 dumpstate 命令类似,生成一个包含丰富信息的 bug 报告,报告为 zip 文件,但要比 dumpstate 更详细,适合用于深入的故障排查和问题分析:
adb bugreport
# 截图录屏
# adb shell screencap
截屏并保存到文件:
adb shell screencap /mnt/sdcard/Download/spiderapi.png
# adb shell screenrecord
录制屏幕并保存到文件:
adb shell screenrecord /sdcard/spiderapi.mp4
指定录制时长,例如 10 秒:
adb shell screenrecord --time-limit 10 /sdcard/video.mp4
指定录制的分辨率,默认值为设备的主显示分辨率(如果支持),如果不支持,则为 1280x720,为了获得最佳效果,请使用 AVC 编码器支持的大小:
adb shell screenrecord --size 720x1280 /sdcard/video.mp4
指定视频比特率,例如 4Mbps,单位为每秒比特数,值可以指定为位或兆位,例如 4000000 相当于 4Mbps,默认 20Mbps:
adb shell screenrecord --bit-rate 4000000 /sdcard/video.mp4
录制时显示触摸事件(触摸点会在录制的视频中可见):
adb shell screenrecord --show-touch /sdcard/video.mp4
输出的视频旋转 90°,此功能是实验性的:
adb shell screenrecord --rotate /sdcard/video.mp4
添加额外的信息,例如覆盖时间戳,这在捕捉的视频中有助于说明错误:
adb shell screenrecord --bugreport /mnt/sdcard/Download/test.mp4
设置最长录制时间,以秒为单位,默认值/最大值为 180:
adb shell screenrecord --time-limit=120 /mnt/sdcard/Download/test.mp4
在命令行屏幕上显示日志信息,如果不设置此选项,则实用程序在运行时不会显示任何信息:
adb shell screenrecord --verbose /mnt/sdcard/Download/test.mp4
# 系统相关
# adb root
使用 root 权限重新启动 adbd:
adb root
在没有 root 权限的情况下重新启动 adbd:
adb unroot
# adb sideload
通过 ADB 将固件或刷机包(通常是更新固件或操作系统的软件包)传输到 Android 设备并安装它:
adb sideload /mnt/sdcard/Download/ota.zip
# adb shell ps
列出当前正在运行的进程的信息:
adb shell ps
列出所有正在运行的进程的信息:不仅仅是用户进程,包括系统服务、应用程序以及系统组件:
adb shell ps -A
通过 PID 查看特定进程的详细信息:
adb shell ps -p 1256
列出当前正在运行的所有线程的信息,而不仅仅是进程:
adb shell ps -t
# adb shell top
实时查看当前运行的进程的资源使用情况,包括 CPU 占用率、内存使用、进程名称等信息:
adb shell top
实时查看当前运行的线程的资源使用情况,包括 CPU 占用率、内存使用、线程名称等信息:
adb shell top -H
实时查看当前运行的进程的资源使用情况,并按照 CPU 占用率(%CPU)、内存占用率(%MEM)和累计运行时间(TIME+)进行排序:
adb shell top -o %CPU,%MEM,TIME+
查看当前运行的前 50 个占用 CPU 资源最多的进程的信息:
adb shell top -m 50
# adb shell getprop
获取 Android 设备上的系统属性信息,Android 系统通过属性来存储和检索各种系统配置和状态信息,例如设备型号、Android 版本、屏幕分辨率、构建信息等:
adb shell getprop
显示属性类型而不是值:
adb shell getprop -T
获取 SIM 卡运营商:
adb shell getprop gsm.sim.operator.alpha
获取设备 IEMI:
adb shell getprop ro.ril.oem.imei
# adb shell setprop
设置系统属性的值:
adb shell setprop