本页内容
adb 的工作原理
在设备上启用 adb 调试
通过 Wi-Fi 连接到设备(Android 11 及更高版本)
通过 Wi-Fi 连接到设备(Android 10 及更低版本)
模拟器未列出
将命令发送至特定设备
安装应用
设置端口转发
将文件复制到设备/从设备复制文件
停止 adb 服务器
发出 adb 命令
调用 Activity 管理器 (am)
调用软件包管理器 (pm)
调用设备政策管理器 (dpm)
截取屏幕截图
录制视频
读取应用的 ART 配置文件
重置测试设备
sqlite
Android 调试桥 (adb)
本页内容
adb 的工作原理
在设备上启用 adb 调试
通过 Wi-Fi 连接到设备(Android 11 及更高版本)
通过 Wi-Fi 连接到设备(Android 10 及更低版本)
查询设备
模拟器未列出
将命令发送至特定设备
安装应用
设置端口转发
将文件复制到设备/从设备复制文件
停止 adb 服务器
发出 adb 命令
发出 shell 命令
调用 Activity 管理器 (am)
调用软件包管理器 (pm)
调用设备政策管理器 (dpm)
截取屏幕截图
录制视频
读取应用的 ART 配置文件
重置测试设备
sqlite
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端
守护程序 (adbd)
服务器
adb
android_sdk
adb
包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。或者,如果您需要独立的 Android SDK 平台工具软件包,也可以点击此处进行下载。
如需了解如何连接设备以使用 ADB,包括如何使用 Connection Assistant 对常见问题进行排查,请参阅在硬件设备上运行应用。
adb 的工作原理
如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。
在设备上启用 adb 调试
如要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下)。如需在通过 WLAN 连接的设备上使用 adb,请参阅通过 WLAN 连接到设备。
在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需显示开发者选项,请依次转到设置 > 关于手机,然后点按 build 号七次。返回上一屏幕,在底部可以找到开发者选项。
在某些设备上,“开发者选项”屏幕所在的位置或名称可能有所不同。
android_sdk
adb devices
现在,您已经可以通过 USB 连接设备。您可以通过从 android_sdk/platform-tools/ 目录执行 adb devices
验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。
注意:当您连接搭载 Android 4.2.2 或更高版本的设备时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 adb 命令。
要详细了解如何通过 USB 连接到设备,请参阅在硬件设备上运行应用。
通过 Wi-Fi 连接到设备(Android 11 及更高版本)
无线调试
要允许通过此网络进行无线调试吗?
的对话框中,点击
允许
使用配对码配对设备
android_sdk
ipaddr
:
port
ipaddr
:
port
。使用
无线调试
通过 WLAN 连接到设备(Android 10 及更低版本)
一般情况下,adb 通过 USB 与设备进行通信,但您也可以在以下情况下通过 WLAN 使用 adb:
如要连接到搭载早期 Android 版本的设备,您必须通过 USB 执行一些初始步骤。下文对这些步骤做了说明。
如果您要连接到 Wear OS 设备,请关闭手机上与该设备配对的蓝牙。
设置
>
关于平板电脑
(或
关于手机
)>
状态
>
IP 地址
下找到 IP 地址。或者,对于 Wear OS 设备,您可以在
设置
>
WLAN 设置
>
高级
>
IP 地址
device_ip_address
device_ip_address
adb connect
然后,从头开始操作。
查询设备
devices
在发出 adb 命令之前,了解哪些设备实例已连接到 adb 服务器会很有帮助。您可以使用 devices
命令生成已连接设备的列表。
作为回应,adb 会针对每个设备输出以下状态信息:
emulator-5554
offline
device
no device
-l
选项,
devices
devices
以下示例展示了 devices
命令及其输出。有三个设备正在运行。列表中的前两行表示模拟器,第三行表示连接到计算机的硬件设备。
模拟器未列出
adb devices
adb devices
adb 服务器未在运行,
emulator
命令时,将
-port
或
-ports
您选择的奇数号端口处于空闲状态,因此可以与指定端口号的端口建立连接,或者该端口处于忙碌状态,模拟器切换到了符合第 2 条中要求的另一个端口,以及
启动模拟器后才启动 adb 服务器。
emulator
adb devices
emulator -list-avds
emulator
android_sdk
adb devices
adb devices
emulator
adb devices
将命令发送至特定设备
devices
-s
$ANDROID_SERIAL
-s
$ANDROID_SERIAL
-s
$ANDROID_SERIAL
helloWorld.apk
-e
-d
安装应用
install
您可以使用 adb 的 install
命令在模拟器或连接的设备上安装 APK:
path_to_apk
install
-t
安装测试 APK 时,必须在 install
命令中使用 -t
选项。如需了解详情,请参阅 -t。
要详细了解如何创建可安装在模拟器/设备实例上的 APK 文件,请参阅构建和运行应用。
请注意,如果您使用的是 Android Studio,则无需直接使用 adb 在模拟器/设备上安装您的应用。Android Studio 会为您执行应用的打包和安装操作。
设置端口转发
forward
将文件复制到设备/从设备复制文件
pull
push
install
pull
push
remote
local
local
remote
local
remote
将 local 和 remote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。例如:
停止 adb 服务器
在某些情况下,您可能需要终止 adb 服务器进程,然后重启以解决问题(例如,如果 adb 不响应命令)。
adb kill-server
如需停止 adb 服务器,请使用 adb kill-server
命令。然后,您可以通过发出其他任何 adb 命令来重启服务器。
发出 adb 命令
您可以从开发机器上的命令行发出 adb 命令,也可以通过脚本发出。用法如下:
serial_number
command
-d
-e
-s
如果只有一个模拟器在运行或者只连接了一个设备,系统会默认将 adb 命令发送至该设备。如果有多个模拟器正在运行并且/或者连接了多个设备,您需要使用 -d
、-e
或 -s
选项指定应向其发送命令的目标设备。
您可以使用以下命令来查看所有支持的 adb 命令的详细列表:
发出 shell 命令
shell
shell
您可以使用 shell
命令通过 adb 发出设备命令,也可以启动交互式 shell。如需发出单个命令,请使用 shell
命令,如下所示:
serial_number
shell_command
shell
要在设备上启动交互式 shell,请使用 shell
命令,如下所示:
serial_number
exit
要退出交互式 shell,请按 Ctrl + D 键或输入 exit
。
ssh(1)
adb install Let’sGo.apk
adb shell setprop foo ’a b’
’
adb shell setprop foo a b
ssh(1)
adb shell setprop foo ’’a b’’
Android 提供了大多数常见的 Unix 命令行工具。如需查看可用工具的列表,请使用以下命令:
adb shell ls /system/bin
--help
toybox --help
对于大多数命令,都可通过 --help
参数获得命令帮助。许多 shell 命令都由 toybox 提供。对于所有 toybox 命令,都可通过 toybox --help
可获得命令的常规帮助。
另请参阅 Logcat 命令行工具,该工具对监控系统日志很有用。
am
调用 Activity 管理器 (am
)
am
在 adb shell 中,您可以使用 Activity 管理器 (am
) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,相应的语法为:
command
您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:
表 2. 可用的 Activity 管理器命令
intent 参数的规范
intent
对于采用 intent 参数的 Activity 管理器命令,您可以使用以下选项指定 intent:
全部显示
action
android.intent.action.VIEW
data_uri
content://contacts/people/1
mime_type
image/png
category
android.intent.category.APP_CONTACTS
component
com.example.app/.ExampleActivity
flags
extra_key
-e | --es
extra_key
extra_string_value
--ez
extra_key
extra_boolean_value
--ei
extra_key
extra_int_value
--el
extra_key
extra_long_value
--ef
extra_key
extra_float_value
--eu
extra_key
extra_uri_value
--ecn
extra_key
extra_component_name_value
extra_key
extra_int_value
[,
extra_int_value
--ela
extra_key
extra_long_value
[,
extra_long_value
--efa
extra_key
extra_float_value
[,
extra_float_value
--grant-read-uri-permission
--grant-write-uri-permission
--debug-log-resolution
--exclude-stopped-packages
--include-stopped-packages
--activity-brought-to-front
--activity-clear-top
--activity-clear-when-task-reset
--activity-exclude-from-recents
--activity-launched-from-history
--activity-multiple-task
--activity-no-animation
--activity-no-history
--activity-no-user-action
--activity-previous-is-top
--activity-reorder-to-front
--activity-reset-task-if-needed
--activity-single-top
--activity-clear-task
--activity-task-on-home
--receiver-registered-only
--receiver-replace-pending
--selector
-d
和
-t
URI
component
package
pm
调用软件包管理器 (pm
)
pm
在 adb shell 中,您可以使用软件包管理器 (pm
) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。在 shell 中,相应的语法为:
command
您也可以直接从 adb 发出软件包管理器命令,无需进入远程 shell。例如:
com.example.MyApp
表 3. 可用的软件包管理器命令。
dpm
调用设备政策管理器 (dpm
)
dpm
为便于您开发和测试设备管理(或其他企业)应用,您可以向设备政策管理器 (dpm
) 工具发出命令。使用该工具可控制活动管理应用,或更改设备上的政策状态数据。在 shell 中,语法如下:
command
您也可以直接从 adb 发出设备政策管理器命令,无需进入远程 shell:
command
表 4. 可用的设备政策管理器命令
截取屏幕截图
screencap
filename
screencap
pull
以下屏幕截图会话示例展示了如何使用 adb shell 截取屏幕截图,以及如何使用 pull
命令从设备下载屏幕截图文件:
录制视频
screenrecord
在 shell 中,使用以下语法:
options
filename
screenrecord
--time-limit
按 Ctrl + C 键(在 Mac 上,按 Command + C 键)可停止屏幕录制;如果不手动停止,到三分钟或 --time-limit
设置的时间限制时,录制将会自动停止。
screenrecord
pull
如需开始录制设备屏幕,请运行 screenrecord
命令以录制视频。然后,运行 pull
命令以将视频从设备下载到主机。下面是一个录制会话示例:
screenrecord
screenrecord
实用程序能以您要求的任何支持的分辨率和比特率进行录制,同时保持设备显示屏的宽高比。默认情况下,该实用程序以本机显示分辨率和屏幕方向进行录制,时长不超过三分钟。
screenrecord
screenrecord
实用程序的局限性:
音频不与视频文件一起录制。
无法在搭载 Wear OS 的设备上录制视频。
某些设备可能无法以它们的本机显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。
screenrecord
表 5. screenrecord
选项
读取应用的 ART 配置文件
从 Android 7.0(API 级别 24)开始,Android Runtime (ART) 会收集已安装应用的执行配置文件,这些配置文件用于优化应用性能。您可能需要检查收集的配置文件,以了解在应用启动期间,系统频繁执行了哪些方法和使用了哪些类。
要生成文本格式的配置文件信息,请使用以下命令:
package
要检索生成的文件,请使用:
package
重置测试设备
testharness
testharness
testharness
停用预装的安全应用
testharness
sqlite
sqlite3
.dump
SQL CREATE
.schema
sqlite3
可启动用于检查 sqlite 数据库的 sqlite 命令行程序。它包含用于输出表格内容的 .dump
以及用于输出现有表格的 SQL CREATE
语句的 .schema
等命令。您也可以从命令行执行 SQLite 命令,如下所示。
要了解详情,请参阅 sqlite3 命令行文档。
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2021-07-27 UTC.
在微信上关注“Google Developers”
在 Twitter 上关注 @AndroidDev
在 YouTube 上访问“Android Developers”频道
关于 Android
支持
文档
请选择一个选项
Language
English
Bahasa Indonesia
Deutsch
Español
Español – América Latina
Français
Português – Brasil
Tiếng Việt
Türkçe
Русский
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
请选择一个选项
Language
English
Bahasa Indonesia
Deutsch
Español
Español – América Latina
Français
Português – Brasil
Tiếng Việt
Türkçe
Русский
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
联系客服