悠米是只猫

悠米是只猫

Android Debug Bridge (ADB) 命令详解及用法指南

2024-11-10

引言

Android Debug Bridge(简称 ADB)是 Android SDK 中的一个工具,它使得开发人员能够管理设备或手机壳上的调试,还可以进行很多手机操作,例如安装软件、运行 shell 命令等等。本文将详细介绍 ADB 的各种命令及其用法。

ADB 版本信息

首先,我们来看一下 ADB 的版本信息:

Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as C:\WINDOWS\system32\adb.exe
Running on Windows 10.0.26100

全局选项

  • -a:监听所有网络接口,而不仅仅是 localhost。

  • -d:使用 USB 设备(如果连接多个设备则会报错)。

  • -e:使用 TCP/IP 设备(如果有多个 TCP/IP 设备可用则会报错)。

  • -s SERIAL:使用指定序列号的设备(覆盖 $ANDROID_SERIAL)。

  • -t ID:使用指定传输 ID 的设备。

  • -H:ADB 服务器主机名(默认 localhost)。

  • -P:ADB 服务器端口(默认 5037)。

  • -L SOCKET:监听指定套接字的 ADB 服务器(默认 tcp:localhost:5037)。

  • --one-device SERIAL|USB:仅与一个 USB 设备连接,需与 start-serverserver nodaemon 一起使用。

  • --exit-on-write-error:如果 stdout 关闭则退出。

通用命令

  • devices [-l]:列出连接的设备(-l 为长输出)。

  • help:显示帮助信息。

  • version:显示版本号。

网络相关命令

  • connect HOST[:PORT]:通过 TCP/IP 连接到设备(默认端口 5555)。

  • disconnect [HOST[:PORT]]:断开与指定 TCP/IP 设备的连接(默认端口 5555),或断开所有连接。

  • pair HOST[:PORT] [PAIRING CODE]:与设备进行安全 TCP/IP 通信配对。

  • forward --list:列出所有转发套接字连接。

  • forward [--no-rebind] LOCAL REMOTE:使用指定的本地和远程套接字进行转发。

  • forward --remove LOCAL:移除特定的转发套接字连接。

  • forward --remove-all:移除所有转发套接字连接。

  • reverse --list:列出设备上的所有反向套接字连接。

  • reverse [--no-rebind] REMOTE LOCAL:使用指定的远程和本地套接字进行反向转发。

  • reverse --remove REMOTE:移除特定的反向套接字连接。

  • reverse --remove-all:移除设备上的所有反向套接字连接。

  • mdns check:检查 mdns 发现是否可用。

  • mdns services:列出所有发现的 mdns 服务。

文件传输

  • push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE:将本地文件/目录复制到设备。

  • pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL:从设备复制文件/目录。

  • sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]:将本地构建同步到设备。

Shell 命令

  • shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]:运行远程 shell 命令(如果没有命令则进入交互式 shell)。

  • emu COMMAND:运行模拟器控制台命令。

应用安装

  • install [-lrtsdg] [--instant] PACKAGE:将单个包推送到设备并安装。

  • install-multiple [-lrtsdpg] [--instant] PACKAGE...:推送多个 APK 到设备进行单次安装。

  • uninstall [-k] PACKAGE:从设备中移除应用包。

调试

  • bugreport [PATH]:将 bug 报告写入指定路径。

  • jdwp:列出托管 JDWP 传输的进程 ID。

  • logcat:显示设备日志。

安全

  • disable-verity:在 userdebug 构建上禁用 dm-verity 检查。

  • enable-verity:在 userdebug 构建上重新启用 dm-verity 检查。

  • keygen FILE:生成 ADB 公钥/私钥。

脚本

  • wait-for[-TRANSPORT]-STATE...:等待设备进入指定状态。

  • get-state:打印设备状态。

  • get-serialno:打印序列号。

  • get-devpath:打印设备路径。

  • remount [-R]:重新挂载分区为读写。

  • reboot [bootloader|recovery|sideload|sideload-auto-reboot]:重启设备。

  • sideload OTAPACKAGE:侧载 OTA 包。

  • root:以 root 权限重启 adbd。

  • unroot:不以 root 权限重启 adbd。

  • usb:重启 adbd 监听 USB。

  • tcpip PORT:重启 adbd 监听 TCP 端口。

内部调试

  • start-server:确保 ADB 服务器正在运行。

  • kill-server:如果 ADB 服务器正在运行则杀死它。

  • reconnect:从主机侧强制重新连接。

  • reconnect device:从设备侧强制重新连接。

  • reconnect offline:重置离线/未授权设备以强制重新连接。

USB 相关命令

  • attach:附加一个分离的 USB 设备。

  • detach:从 USB 设备分离,允许其他进程使用。

环境变量

  • $ADB_TRACE:记录调试信息的列表。

  • $ADB_VENDOR_KEYS:冒号分隔的密钥列表。

  • $ANDROID_SERIAL:要连接的序列号。

  • $ANDROID_LOG_TAGS:logcat 使用的标签。

  • $ADB_LOCAL_TRANSPORT_MAX_PORT:最大模拟器扫描端口。

  • $ADB_MDNS_AUTO_CONNECT:允许自动连接的 mdns 服务列表。

结语

通过本文的介绍,相信你对 ADB 工具及其命令有了更深入的了解。ADB 是一个非常强大的工具,掌握其使用方法可以大大提高 Android 开发的效率。希望这篇指南对你有所帮助!