打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android调试桥(adb) | Android开发者 ...

本页内容

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 及更高版本)

SDK 平台工具

开发者选项

无线调试

要允许通过此网络进行无线调试吗?

的对话框中,点击

允许

使用配对码配对设备

android_sdk

ipaddr

:

port

ipaddr

:

port

。使用

无线调试

通过 WLAN 连接到设备(Android 10 及更低版本)

一般情况下,adb 通过 USB 与设备进行通信,但您也可以在以下情况下通过 WLAN 使用 adb:

在硬件设备上运行应用

如要连接到搭载早期 Android 版本的设备,您必须通过 USB 执行一些初始步骤。下文对这些步骤做了说明。

调试 Wear OS 应用

如果您要连接到 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

localremote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。例如:

停止 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

setFlags()

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

ComponentName

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

FLAG_GRANT_READ_URI_PERMISSION

--grant-write-uri-permission

FLAG_GRANT_WRITE_URI_PERMISSION

--debug-log-resolution

FLAG_DEBUG_LOG_RESOLUTION

--exclude-stopped-packages

FLAG_EXCLUDE_STOPPED_PACKAGES

--include-stopped-packages

FLAG_INCLUDE_STOPPED_PACKAGES

--activity-brought-to-front

FLAG_ACTIVITY_BROUGHT_TO_FRONT

--activity-clear-top

FLAG_ACTIVITY_CLEAR_TOP

--activity-clear-when-task-reset

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

--activity-exclude-from-recents

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

--activity-launched-from-history

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

--activity-multiple-task

FLAG_ACTIVITY_MULTIPLE_TASK

--activity-no-animation

FLAG_ACTIVITY_NO_ANIMATION

--activity-no-history

FLAG_ACTIVITY_NO_HISTORY

--activity-no-user-action

FLAG_ACTIVITY_NO_USER_ACTION

--activity-previous-is-top

FLAG_ACTIVITY_PREVIOUS_IS_TOP

--activity-reorder-to-front

FLAG_ACTIVITY_REORDER_TO_FRONT

--activity-reset-task-if-needed

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

--activity-single-top

FLAG_ACTIVITY_SINGLE_TOP

--activity-clear-task

FLAG_ACTIVITY_CLEAR_TASK

--activity-task-on-home

FLAG_ACTIVITY_TASK_ON_HOME

--receiver-registered-only

FLAG_RECEIVER_REGISTERED_ONLY

--receiver-replace-pending

FLAG_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
  • Русский
  • ภาษาไทย
  • 中文 – 简体
  • 中文 – 繁體
  • 日本語
  • 한국어
  • 请选择一个选项

    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
  • Русский
  • ภาษาไทย
  • 中文 – 简体
  • 中文 – 繁體
  • 日本語
  • 한국어
  • 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    android 命令(adb shell)进入指定模拟器或设备
    为开发者总结了Android ADB 的常用十种命令
    android 命令
    adb好用命令(自动化测试过程中)
    adb shell am 命令介绍
    android 当中通过adb命令打电话、发送短信(转)
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服