哦吼

哦吼

Android ADB 命令手册

2024-11-10
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

global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
 -e                       use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
 -t ID                    use device with given transport id
 -H                       name of adb server host [default=localhost]
 -P                       port of adb server [default=5037]
 -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
 --one-device SERIAL|USB  only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.
 --exit-on-write-error    exit if stdout is closed

general commands:
 devices [-l]             list connected devices (-l for long output)
 help                     show this help message
 version                  show version num

networking:
 connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
 disconnect [HOST[:PORT]]
     disconnect from given TCP/IP device [default port=5555], or all
 pair HOST[:PORT] [PAIRING CODE]
     pair with a device for secure TCP/IP communication
 forward --list           list all forward socket connections
 forward [--no-rebind] LOCAL REMOTE
     forward socket connection using:
       tcp:<port> (<local> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
       dev:<character device name>
       dev-raw:<character device name> (open device in raw mode)
       jdwp:<process pid> (remote only)
       vsock:<CID>:<port> (remote only)
       acceptfd:<fd> (listen only)
 forward --remove LOCAL   remove specific forward socket connection
 forward --remove-all     remove all forward socket connections
 reverse --list           list all reverse socket connections from device
 reverse [--no-rebind] REMOTE LOCAL
     reverse socket connection using:
       tcp:<port> (<remote> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
 reverse --remove REMOTE  remove specific reverse socket connection
 reverse --remove-all     remove all reverse socket connections from device
 mdns check               check if mdns discovery is available
 mdns services            list all discovered services

file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     -n: dry run: push files to device without storing to the filesystem
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     --sync: only push files that have different timestamps on the host than the device
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
 sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -l: list files that would be copied, but don't copy them
     -n: dry run: push files to device without storing to the filesystem
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)

shell:
 shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
     run remote shell command (interactive shell if no command given)
     -e: choose escape character, or "none"; default '~'
     -n: don't read from stdin
     -T: disable pty allocation
     -t: allocate a pty if on a tty (-tt: force pty allocation)
     -x: disable remote exit codes and stdout/stderr separation
 emu COMMAND              run emulator console command

app installation (see also `adb shell cmd package help`):
 install [-lrtsdg] [--instant] PACKAGE
     push a single package to the device and install it
 install-multiple [-lrtsdpg] [--instant] PACKAGE...
     push multiple APKs to the device for a single package and install them
 install-multi-package [-lrtsdpg] [--instant] PACKAGE...
     push one or more packages to the device and install them atomically
     -r: replace existing application
     -t: allow test packages
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions
     --abi ABI: override platform's default ABI
     --instant: cause the app to be installed as an ephemeral install app
     --no-streaming: always push APK to device and invoke Package Manager as separate steps
     --streaming: force streaming APK directly into Package Manager
     --fastdeploy: use fast deploy
     --no-fastdeploy: prevent use of fast deploy
     --force-agent: force update of deployment agent when using fast deploy
     --date-check-agent: update deployment agent when local version is newer and using fast deploy
     --version-check-agent: update deployment agent when local version has different version code and using fast deploy
     (See also `adb shell pm help` for more options.)
 uninstall [-k] PACKAGE
     remove this app package from the device
     '-k': keep the data and cache directories

debugging:
 bugreport [PATH]
     write bugreport to given PATH [default=bugreport.zip];
     if PATH is a directory, the bug report is saved in that directory.
     devices that don't support zipped bug reports output to stdout.
 jdwp                     list pids of processes hosting a JDWP transport
 logcat                   show device log (logcat --help for more)

security:
 disable-verity           disable dm-verity checking on userdebug builds
 enable-verity            re-enable dm-verity checking on userdebug builds
 keygen FILE
     generate adb public/private key; private key stored in FILE,

scripting:
 wait-for[-TRANSPORT]-STATE...
     wait for device to be in a given state
     STATE: device, recovery, rescue, sideload, bootloader, or disconnect
     TRANSPORT: usb, local, or any [default=any]
 get-state                print offline | bootloader | device
 get-serialno             print <serial-number>
 get-devpath              print <device-path>
 remount [-R]
      remount partitions read-write. if a reboot is required, -R will
      will automatically reboot the device.
 reboot [bootloader|recovery|sideload|sideload-auto-reboot]
     reboot the device; defaults to booting system image but
     supports bootloader and recovery too. sideload reboots
     into recovery and automatically starts sideload mode,
     sideload-auto-reboot is the same but reboots after sideloading.
 sideload OTAPACKAGE      sideload the given full OTA package
 root                     restart adbd with root permissions
 unroot                   restart adbd without root permissions
 usb                      restart adbd listening on USB
 tcpip PORT               restart adbd listening on TCP on PORT

internal debugging:
 start-server             ensure that there is a server running
 kill-server              kill the server if it is running
 reconnect                kick connection from host side to force reconnect
 reconnect device         kick connection from device side to force reconnect
 reconnect offline        reset offline/unauthorized devices to force reconnect

usb:
 attach                   attach a detached USB device
 detach                   detach from a USB device to allow use by other processes
environment variables:
 $ADB_TRACE
     comma/space separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp,services,auth,fdevent,shell,incremental
 $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
 $ANDROID_SERIAL          serial number to connect to (see -s)
 $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)
 $ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)
 $ADB_MDNS_AUTO_CONNECT   comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)

adb(Android Debug Bridge)是Android开发中用于与设备进行通信的一个命令行工具。以下是各个选项和命令的解释及用法:

### 全局选项

- -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:仅与'start-server'或'server nodaemon'一起使用,服务器将只连接到指定的USB设备,通过序列号或USB设备地址指定。

- --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:使用以下方式前向套接字连接:

- tcp:<port>(<local>可以是"tcp:0"以选择任何开放端口)

- localabstract:<unix域套接字名称>

- localreserved:<unix域套接字名称>

- localfilesystem:<unix域套接字名称>

- dev:<字符设备名称>

- dev-raw:<字符设备名称>(以原始模式打开设备)

- jdwp:<进程pid>(仅限远程)

- vsock:<CID>:<port>(仅限远程)

- acceptfd:<fd>(仅监听)

- forward --remove LOCAL:移除特定的前向套接字连接。

- forward --remove-all:移除所有前向套接字连接。

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

- reverse [--no-rebind] REMOTE LOCAL:使用以下方式反向套接字连接:

- tcp:<port>(<remote>可以是"tcp:0"以选择任何开放端口)

- localabstract:<unix域套接字名称>

- localreserved:<unix域套接字名称>

- localfilesystem:<unix域套接字名称>

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

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

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

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

### 文件传输

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

- -n:干运行:将文件推送到设备而不存储到文件系统。

- -q:抑制进度消息。

- -Z:禁用压缩。

- -z:使用指定的算法启用压缩(any/none/brotli/lz4/zstd)。

- --sync:仅推送在主机上与设备具有不同时间戳的文件。

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

- -a:保留文件时间戳和模式。

- -q:抑制进度消息。

- -Z:禁用压缩。

- -z:使用指定的算法启用压缩(any/none/brotli/lz4/zstd)。

- sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]:从$ANDROID_PRODUCT_OUT同步本地构建到设备(默认为all)。

- -l:列出将要复制的文件,但不复制它们。

- -n:干运行:将文件推送到设备而不存储到文件系统。

- -q:抑制进度消息。

- -Z:禁用压缩。

- -z:使用指定的算法启用压缩(any/none/brotli/lz4/zstd)。

### shell

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

- -e:选择转义字符,或"none";默认为'~'。

- -n:不从stdin读取。

- -T:禁用pty分配。

- -t:如果是在tty上,则分配一个pty(-tt:强制pty分配)。

- -x:禁用远程退出代码和stdout/stderr分离。

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

### 应用安装(另请参阅`adb shell cmd package help`)

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

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

- install-multi-package [-lrtsdpg] [--instant] PACKAGE...:将一个或多个包推送到设备并原子性地安装它们。

- -r:替换现有应用程序。

- -t:允许测试包。

- -d:允许版本代码降级(仅限可调试的包)。

- -p:部分应用程序安装(仅限install-multiple)。

- -g:授予所有运行时权限。

- --abi ABI:覆盖平台的默认ABI。

- --instant:导致应用程序被安装为临时安装应用程序。

- --no-streaming:始终将APK推送到设备并分步调用Package Manager。

- --streaming:强制将APK直接流式传输到Package Manager。

- --fastdeploy:使用快速部署。

- --no-fastdeploy:防止使用快速部署。

- --force-agent:在使用快速部署时强制更新部署代理。

- --date-check-agent:在使用快速部署时,如果本地版本较新,则更新部署代理。

- --version-check-agent:在使用快速部署时,如果本地版本具有不同的版本代码,则更新部署代理。

### 调试

- bugreport [PATH]:将bug报告写入给定路径[默认=bugreport.zip];如果PATH是目录,则bug报告保存在该目录中。不支持压缩bug报告的设备将输出到stdout。

- jdwp:列出托管JDWP传输的进程的pids。

- logcat:显示设备日志(logcat --help了解更多)。

### 安全

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

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

- keygen FILE:生成adb公钥/私钥;私钥存储在FILE中。

### 脚本

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

- STATE:device, recovery, rescue, sideload, bootloader, 或 disconnect。

- TRANSPORT:usb, local, 或 any [默认=any]。

- get-state:打印offline | bootloader | device。

- get-serialno:打印<serial-number>。

- get-devpath:打印<device-path>。

- remount [-R]:重新挂载分区为读写。如果需要重启,则-R将自动重启设备。

- reboot [bootloader|recovery|sideload|sideload-auto-reboot]:重启设备;默认为引导系统映像,但也支持引导加载程序和恢复。sideload重新启动进入恢复模式,并自动开始sideload模式,sideload-auto-reboot也是如此,但在sideload后重新启动。

- sideload OTAPACKAGE:sideload给定的完整OTA包。

- root:以root权限重新启动adbd。

- unroot:以非root权限重新启动adbd。

- usb:重新启动adbd监听USB。

- tcpip PORT:重新启动adbd监听TCP上的PORT。

### 内部调试

- start-server:确保运行服务器。

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

- reconnect:从主机侧踢掉连接以强制重新连接。

- reconnect device:从设备侧踢掉连接以强制重新连接。

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

### USB

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

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

### 环境变量

- $ADB_TRACE:逗号/空格分隔的调试信息列表以进行记录:all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp,services,auth,fdevent,shell,incremental。

- $ADB_VENDOR_KEYS:冒号分隔的键(文件或目录)列表。

- $ANDROID_SERIAL:要连接的序列号(见-s)。

- $ANDROID_LOG_TAGS:logcat使用的标签(见logcat --help)。

- $ADB_LOCAL_TRANSPORT_MAX_PORT:最大模拟器扫描端口(默认5585,16个模拟器)。

- $ADB_MDNS_AUTO_CONNECT:逗号分隔的mdns服务列表以允许自动连接(默认adb-tls-connect)。

### 在线文档

- [Android Debug Bridge (adb) 文档](https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/main/docs/user/adb.1.md)