在硬件设备上运行应用

请务必先在真实设备上测试您的 Android 应用,然后再向用户发布。本页介绍了如何设置您的开发环境和 Android 设备,以便通过 Android 调试桥 (adb) 连接进行测试和调试。

设置设备以用于开发工作

在设备上开始调试之前,您必须先决定要使用 USB 线还是 WLAN 连接设备。然后执行以下操作:

  1. 在设备上,打开设置应用,选择开发者选项,然后启用 USB 调试(如果有)。

  2. 设置系统以检测设备。

    • ChromeOS:无需其他配置。
    • macOS:无需其他配置。
    • Windows:为 adb 安装 USB 驱动程序(如适用)。如需安装指南和用于获取 OEM 驱动程序的链接,请参阅安装 OEM USB 驱动程序
    • Ubuntu Linux:请进行以下设置:

      • 希望使用 adb 的每个用户都需要位于 plugdev 群组中。如果您看到一条错误消息,指出您不在 plugdev 群组内,请使用以下命令将自己添加到其中:
      sudo usermod -aG plugdev $LOGNAME
      

      群组仅在登录时更新,因此您必须退出才能使此更改生效。当您重新登录后,可以使用 id 检查自己现在是否已在 plugdev 群组中。

      • 需要为系统添加涵盖设备的 udev 规则。android-sdk-platform-tools-common 软件包中包含一组适用于 Android 设备并由社区维护的默认 udev 规则。若要安装此软件包,请使用以下命令:
      apt-get install android-sdk-platform-tools-common
      

使用 USB 连接到设备

完成上述设置并通过 USB 连接后,您可以在 Android Studio 中点击运行图标 ,以在设备上构建和运行您的应用

您还可以使用 adb 发出命令,如下所示:

  • android_sdk/platform-tools/ 目录中运行 adb devices 命令,以验证您的设备是否已连接。如果已连接,您将看到该设备被列出。
  • 发出任意包含 -d 标志的 adb 命令,以将您的设备设为目标设备。

使用 WLAN 连接到设备

Android 11 及更高版本支持使用 Android 调试桥 (adb) 从工作站以无线方式部署和调试应用。例如,您可以将可调试的应用部署到多台远程设备,而无需通过 USB 实际连接您的设备,从而避免常见的 USB 连接问题(例如驱动程序安装方面的问题)。

如需使用无线调试,您需要使用配对码将您的设备与工作站配对。首先,请完成以下步骤:

  1. 确保您的工作站和设备已连接到同一无线网络。
  2. 确保您的设备搭载的是 Android 11 或更高版本。如需了解详情,请参阅查看并更新 Android 版本
  3. 确保您已安装最新版本的 Android Studio。点击此处即可下载最新版本
  4. 在您的工作站上,将 SDK 平台工具更新到最新版本。

如需连接到您的设备,请按以下步骤操作:

  1. 打开 Android Studio,然后从运行配置菜单中选择 Pair Devices Using Wi-Fi
    运行配置下拉菜单
    图 1. 运行配置菜单。

    系统随即会显示 Pair devices over Wi-Fi 对话框,如图 2 所示。
    “Pair devices over Wi-Fi”弹出式窗口的屏幕截图
    图 2. 使用二维码或配对码配对设备的对话框。
  2. 在设备上启用开发者选项
  3. 在设备上启用通过 WLAN 调试
    显示“Wireless debugging”系统设置的 Pixel 手机屏幕截图。
    图 3. Google Pixel 手机上的 Wireless debugging 设置。
  4. 点按 Wireless debugging,然后配对您的设备:
    1. 如需使用二维码配对设备,请选择 Pair device with QR code,然后扫描二维码,如图 2 所示。
    2. 如需使用配对码配对设备,请从 Pair new devices over Wi-Fi 对话框中选择 Pair device with pairinging code。在您的设备上,选择 Pair using pairing code。系统会显示一个 6 位数的配对码。当您的设备显示在 Pair devices over Wi-Fi 窗口中后,请输入设备上显示的 6 位数配对码并选择 Pair
      配对码输入示例的屏幕截图
      图 4. 6 位数配对码输入示例。
  5. 配对后,您可以尝试将应用部署到设备。

如需与其他设备配对,或在工作站上取消保存此设备,请执行以下操作:

  1. 在设备上前往 Wireless debugging
  2. Paired devices 下方,点按工作站名称。
  3. 选择 Forget

设备镜像

您可以在 Android Studio 的 Running Devices 窗口中镜像实体设备。通过将设备的显示屏直接流式传输到 Android Studio,您可以使用 Studio IDE 本身执行常见操作,例如启动应用和与应用交互、旋转屏幕、折叠和展开手机以及调节音量。

当有设备连接到启用了 USB 或无线调试的计算机时,设备镜像始终可用。您可以使用 Running Devices 窗口或 Device Manager (View > Tool Windows > Device Manager) 开始和停止镜像。您还可以在设置中自定义启用设备镜像的时间(依次点击 Settings > Tools > Device Mirroring)。

“Running Devices”界面

重定向音频

使用设备镜像功能时,您可以将音频从已连接的实际设备重定向到计算机扬声器或耳机。借助音频重定向功能,您可以将耳机连接到计算机,同时收听计算机和已连接的手机的声音,而无需手动重新连接到两部设备。如需启用音频重定向,请依次前往 File(在 macOS 上为 Android Studio)> Settings > Tools > Device Mirroring,然后选择 Redirect audio from local devices。请注意,对于搭载 Android 12 或更高版本的 Firebase Test Lab 设备,无论设置如何,系统始终会重定向音频。

已知问题

某些设备可能无法以足够的比特率编码,因此无法支持设备镜像。在这些情况下,您可能会在 Running Devices 窗口中看到错误,以及类似于以下内容的日志。

2023-06-01 15:32:22,675 [  56094]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - Too many video encoder errors:
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - encoder: c2.android.vp8.encoder
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - mime type: video/x-vnd.on2.vp8
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max resolution: 640x640
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - min resolution: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - alignment: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate: 960
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate for 288x640: 960
2023-06-01 15:32:22,870 [  56289]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max bitrate: 20000000
2023-06-01 15:32:22,871 [  56290]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - terminated with code 1

隐私权声明

Android Studio 可以根据设备镜像设置,自动为任何已连接的配对设备启动设备镜像。这可能会导致通过 adb tcpip 命令连接的设备出现信息披露,因为镜像信息和命令是通过未加密通道传递的。此外,Android Studio 会使用未加密的通道与 adb 服务器通信,因此主机上的其他用户可能会拦截镜像信息。

排查设备连接问题

如果您的设备未连接到 Android Studio,请尝试执行以下操作来解决问题。

使用 Connection Assistant 排查问题

Connection Assistant 提供了分步说明,以帮助您通过 adb 连接来设置和使用设备。

如需启用此 Assistant,请依次选择 Tools > Troubleshoot Device Connections

Connection Assistant 的 Assistant 面板通过一系列页面提供了说明、上下文相关控件以及已连接设备的列表。根据需要,使用 Assistant 面板底部的 NextPrevious 按钮浏览页面:

  • 通过 USB 连接设备:Connection Assistant 首先会提示您通过 USB 连接设备,并提供 Rescan USB devices 按钮,您可以使用该按钮重新开始扫描已连接的设备。
  • 启用 USB 调试:然后,Connection Assistant 会向您说明如何通过设备上的开发者选项启用 USB 调试。
  • 重新启动 adb 服务器:如果您仍未在可用设备列表中看到您的设备,可以使用 Connection Assistant 最后一页上的 Restart ADB server 按钮。重新启动 adb 服务器还会导致 adb 再次扫描设备。如果您仍未在可用设备列表中看到您的设备,请尝试下一部分中的问题排查步骤。

解决 USB 连接问题

如果 Connection Assistant 无法通过 USB 检测到您的设备,请尝试执行以下问题排查步骤来解决问题:

检查 Android Studio 能否连接到 Android 模拟器

如要检查问题是否是由 Android Studio 与 Android 模拟器的连接问题引起的,请按以下步骤操作:

  1. 打开设备管理器
  2. 创建一个新的 AVD(如果您还没有 AVD)。
  3. 使用 AVD 运行模拟器
  4. 执行以下某项操作:
    • 如果 Android Studio 无法连接到模拟器,请下载最新的 SDK 平台工具,然后重试。
    • 如果模拟器成功启动,请检查 USB 数据线(如下一部分中所述)。

检查 USB 数据线

如要检查问题是否是由 USB 数据线故障引起的,请按照本部分中的步骤操作。

如果您有其他 USB 数据线:

  1. 使用辅助数据线连接设备。
  2. 检查 Connection Assistant 现在能否检测到设备。
  3. 如果未检测到设备,请再次尝试使用主数据线。
  4. 如果未检测到设备,则假定问题是设备所致,并检查设备是否已针对开发进行设置,如下一部分中所述。

如果您没有其他 USB 数据线,但有其他 Android 设备:

  1. 将辅助设备连接到计算机。
  2. 如果 Connection Assistant 可以检测到辅助设备,则假定问题是主设备所致并检查设备是否已针对开发进行设置

    如果未检测到辅助设备,则问题可能是 USB 数据线所致。

检查设备是否已针对开发进行设置

如要检查问题是否是由设备上的设置引起的,请按以下步骤操作:

  1. 按照针对开发设置设备部分中的步骤操作。
  2. 如果这未解决问题,请与原始设备制造商的客户服务代表联系以获取帮助。告诉客户服务代表,无法使用 adb 将设备连接到 Android Studio。

解决无线连接问题

如果您通过无线方式连接到设备时遇到问题,可以尝试通过以下问题排查步骤来解决问题:

检查您的工作站和设备是否满足前提条件

若要满足无线调试的前提条件,请确保:

检查是否存在其他已知问题

下面列出了 Android Studio 中目前已知的无线调试问题及其解决办法。

  • 无法连接到 WLAN:某些 WLAN 网络(如企业 WLAN 网络)可能会阻止点对点连接,并且不允许您通过 WLAN 进行连接。请尝试通过网线连接,或连接其他 WLAN 网络。
  • “通过 WLAN 使用 adb”的功能有时会自动关闭:如果设备切换 WLAN 网络或断开网络连接,就可能会发生这种情况。

RSA 安全密钥

当您将搭载 Android 4.2.2(API 级别 17)或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 adb 命令。