模拟器高级用法

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

除了基本的触摸屏手势和手机动作之外,您可能还需要在虚拟设备上测试应用的其他功能,例如,您可能想要模拟不同的位置或网络条件。本页将介绍模拟器高级功能以及使用 Android Studio 启动模拟器的不同方式。

本部分的其他页面介绍了使用模拟器的更多高级方式,这些方式需要您使用终端。这些更具体的用例包括:

对于大多数应用开发者来说,基本模拟器导航功能和本页上的各项功能可以满足您的测试需求。如需并排比较与模拟器交互时能够使用的模拟器功能,请参阅模拟器功能比较

屏幕截图

如需对虚拟设备进行截屏,请点击 Take screenshot 按钮 “Take Screenshot”图标

在随即显示的 Screen Capture 对话框中,您可以重新截取、修改或复制截取的图片。对图片满意后,点击 Save。模拟器会创建一个以截图时的年、月、日、时、分、秒命名(即,名为 Screenshot_yyyymmdd-hhmmss.png)的 PNG 文件。您可以根据需要更改名称,然后选择文件的保存位置。

您也可以在命令行上使用以下任一命令截取屏幕截图:

  • screenrecord screenshot [destination-directory]
  • adb emu screenrecord screenshot [destination-directory]

屏幕录制

您可以在 Android 模拟器中录制视频和音频,并将录制内容保存到 WebM 或动画 GIF 文件中。

屏幕录制控件位于 Extended Controls 窗口的 Record and Playback 标签页中。

提示:您也可以按 Ctrl + Shift + R 键(在 macOS 上,按 Command + Shift + R 键)来打开屏幕录制控件。

若要开始屏幕录制,请点击 Record and Playback 标签页中的 Start recording 按钮。如果要停止录制,请点击 Stop recording

用于播放和保存录制视频的控件位于 Record and Playback 标签页底部。若要保存视频,请从该标签页底部的菜单中选择 WebMGIF,然后点击 Save

您也可以在命令行上使用以下命令,从模拟器中录制并保存屏幕录制内容:

adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm

相机支持

对于较低的 Android 版本,模拟器支持在虚拟设备上使用基本相机功能。Android 11 及更高版本还支持以下 Android 模拟器相机功能:

  • RAW 捕获
  • YUV 重新处理
  • 3 级设备
  • 逻辑相机支持
  • 使用传感器管理器中的数据模拟传感器方向
  • 采用视频防抖技术(通过降低握手频率)
  • 采用边缘增强技术(通过移除通常在 YUV 流水线中完成的升频)
  • 并发相机

虚拟场景摄像头和 ARCore

您可以在虚拟环境中使用虚拟场景摄像头对利用 ARCore 打造的增强现实 (AR) 应用进行实验。

如需了解如何在模拟器中使用虚拟场景摄像头,请参阅在 Android 模拟器中运行 AR 应用

将模拟器与相机应用搭配使用时,您可以采用 PNG 或 JPEG 格式导入要在虚拟场景中使用的图像。若要选择在虚拟场景中使用的图像,请打开 Extended controls 窗口,依次选择 Camera > Virtual scene images 标签页,然后点击 Add image。 此功能可用于导入自定义图像(例如二维码),以用于任何基于相机的应用。如需了解详情,请参阅向场景添加增强图像

使用宏测试通用 AR 操作

通过使用模拟器中的预设宏,您可以大大减少测试通用 AR 操作所需的时间。例如,您可以使用宏将设备的所有传感器重置为默认状态。

在使用宏之前,请按照在 Android 模拟器中运行 AR 应用中的步骤为您的应用设置虚拟场景摄像头、在模拟器上运行您的应用,并更新 ARCore。然后,按照以下步骤来使用模拟器宏:

  1. 在模拟器正在运行且已将您的应用连接到 ARCore 的情况下,点击模拟器面板中的 More 图标
  2. 依次选择 Record and Playback > Macro Playback
  3. 选择要使用的宏,然后点击 Play

    在播放过程中,您可以点击 Stop 中断宏。

在单独的窗口中启动模拟器

默认情况下,Android 模拟器会在 Android Studio 中运行。这样,您就可以高效地使用屏幕空间,使用热键在模拟器和编辑器窗口之间快速导航,并在单个应用窗口中整理 IDE 和模拟器工作流。

不过,某些模拟器功能仅支持在单独的窗口中运行。若要在单独的窗口中启动模拟器,请依次前往 File > Settings > Tools > Emulator(在 macOS 上依次前往 Android Studio > Preferences > Tools > Emulator),并取消选择 Launch in a tool window

扩展控件、设置和帮助

您可以通过扩展控件发送数据、更改设备属性、控制应用,等等。如需打开 Extended controls 窗口,请点击模拟器面板中的 More 图标 模拟器扩展控件图标。请注意,仅当您在 Android Studio 之外在单独的窗口中运行模拟器时,其中一些扩展控制选项才可用。

您可以使用键盘快捷键执行其中的很多任务。如需查看模拟器中快捷键的完整列表,请按 F1 键(在 macOS 上,按 Command + / 键),打开“Help”窗格。

表 1. 扩展控件详细信息

功能 说明
位置

您可以使用模拟器来模拟“我的位置”信息:模拟的设备所在的位置。例如,如果您在 Google 地图中点击“My Location”图标 “My Location”图标,然后发送一个位置,地图将显示该位置。

设备的位置信息控件会组织到两个标签页下:Single pointsRoutes

Single points

Single points 标签页中,您可以使用 Google 地图 WebView 搜索地图注点,就像在手机或浏览器中使用 Google 地图时一样。当您在地图上搜索(或点击)某个地点时,可以通过选择地图底部附近的 Save point 来保存该地点。您保存的所有地点都会列在 Extended controls 窗口的右侧。

如需将模拟器位置设置为您在地图上选择的地点,请点击 Extended controls 窗口右下角附近的 Set location 按钮。

Routes

Single points 标签页类似,Routes 标签页提供的 Google 地图 WebView 可用于在两个或多个地点之间创建路线。如需创建并保存路线,请执行以下操作:

  1. 在地图视图中,使用文本字段搜索路线中的第一个目的地。
  2. 从搜索结果中选择地点。
  3. 选择 Navigate 按钮。
  4. 从地图中选择路线的出发地。
  5. (可选)点击 Add destination,为路线添加更多站点。
  6. 点击地图视图中的 Save route 以保存路线。
  7. 指定路线的名称,然后点击 Save

如需让模拟器按照您保存的路线模拟导航,请从 Saved routes 中选择路线,然后点击 Extended controls 窗口右下角附近的 Play route。如需停止模拟,请点击 Stop route

如需继续让模拟器模拟指定的路线,请打开 Repeat playback 旁边的开关。如需更改模拟器模拟指定路线的速度,请从 Playback speed 菜单中选择一个选项。

导入 GPX 和 KML 数据

如需使用 GPS 交换格式 (GPX) 的文件或 Keyhole 标记语言 (KML) 文件中的地理数据,请执行以下操作:

  1. 点击 Load GPX/KML
  2. 在文件对话框中,选择计算机上的一个文件,然后点击 Open
  3. (可选)选择一个 Speed
  4. 速度默认采用 Delay 值 (Speed 1X)。您可以将速度设为两倍 (Speed 2X)、三倍 (Speed 3X),等等。

  5. 点击 Run “Run”图标
显示屏

通过模拟器,您可以将应用部署到多个屏幕,这些屏幕支持可自定义的维度,并且可以帮助您测试支持多窗口多屏幕的应用。在虚拟设备运行时,您最多可以添加两个额外的屏幕,如下所示:

  1. 如需添加屏幕,请点击 Add secondary display
  2. Secondary displays 下的菜单中,执行以下任一操作:
    1. 选择一个预设的宽高比。
    2. 选择 custom,然后为自定义屏幕设置高度宽度dpi
  3. (可选)再次点击 Add secondary display 可添加第三个屏幕。
  4. 点击 Apply changes,将指定的屏幕添加到正在运行的虚拟设备。
移动网络

您可以使用模拟器模拟各种网络条件。您可以大致确定不同网络协议的速度,也可以指定一个 Full 值,以便以计算机所支持的最大速度传输数据。指定任何一种网络协议后的传输速度都比 Full 慢。您还可以指定语音和数据网络状态,例如漫游。默认值在 AVD 中设置。

Network type 下选择一种类型:

  • GSM:全球移动通信系统
  • HSCSD:高速电路交换数据
  • GPRS:通用分组无线服务
  • EDGE:GSM 增强数据率演进
  • UMTS:通用移动通讯系统
  • HSPDA:高速下行链路分组接入
  • LTE:长期演进
  • Full(默认值):使用计算机提供的网络

选择 Signal strength

  • None
  • Poor
  • Moderate(默认值)
  • Good
  • Great

选择 Voice status 和/或 Data status

  • Home(默认值)
  • Roaming
  • Searching
  • Denied (emergency calls only)
  • Unregistered (off)
电池

您可以模拟设备的电池属性,了解应用在不同条件下的运行情况。如需选择 Charge level,请使用滑块控件。

选择一个 Charger connection 值:

  • None
  • AC charger

选择一个 Battery health 值:

  • Good(默认值)
  • Failed
  • Dead
  • Overvoltage
  • Overheated
  • Unknown

选择一个 Battery status 值:

  • Unknown
  • Charging(默认值)
  • Discharging
  • Not charging
  • Full
相机 打开模拟器相机时,您可以将图片加载到模拟的场景中。如需了解详情,请参阅 ARCore 文档中的向场景添加增强图像
手机

您可以使用模拟器模拟来电和短信。

如需呼叫模拟器,请执行以下操作:

  1. From 字段中选择或输入电话号码。
  2. 点击 Call Device
  3. (可选)点击 Hold Call,保持通话。
  4. 如需结束通话,请点击 End Call

如需向模拟器发送短信,请执行以下操作:

  1. From 字段中选择或输入电话号码。
  2. SMS message 字段中输入消息。
  3. 点击 Send Message
Directional Pad

如果 AVD 在硬件配置文件中已启用方向键,您可以将方向键控件与模拟器搭配使用。不过,并非所有设备都支持方向键;例如,Android 手表就不行。 这些按钮可以模拟以下操作:

方向键控件
麦克风 Virtual microphone uses host audio input 开启时,模拟器从主机麦克风接收音频输入;否则,模拟器将不会接收任何音频输入。Virtual headset plug insertedVirtual headset has microphoneVoice Assist 选项目前尚未实现。
指纹

该控件可以模拟 10 种不同的指纹扫描。您可以使用它测试应用中的指纹集成情况。Android 5.1(API 级别 22)及更低版本以及 Wear OS 不支持此功能。

如需在虚拟设备上模拟指纹扫描,请执行以下操作:

  1. 准备一款应用来接收指纹。
  2. 选择 Fingerprint 值。
  3. 点击 Touch Sensor
Virtual sensors > Device Pose

您可以使用该控件针对设备位置和/或屏幕方向的变化对应用进行测试。例如,您可以模拟倾斜和旋转等手势。加速度计不会跟踪设备的绝对位置,只会检测何时发生变化。该控件可以模拟加速度计和磁力计传感器在您移动或旋转真实的设备时会如何响应。

您必须在 AVD 中启用加速度计传感器,才能使用该控件。

该控件通过 x 轴、y 轴和 z 轴的值报告 TYPE_ACCELEROMETER 事件。这些值包含了重力加速度值。例如,如果设备悬浮在外太空,则加速度为零(x 轴、y 轴和 z 轴的值均为 0)。如果将设备放在地球上的某张桌子上面,屏幕朝上,由于存在重力,其加速度为 (0, 0, 9.8)。

该控件还报告 TYPE_MAGNETIC_FIELD 事件,测量的是 x 轴、y 轴和 z 轴的环境磁场(以微特斯拉 μT 为单位)。

如需围绕 x 轴、y 轴和 z 轴旋转设备,请选择 Rotate 并执行以下其中一项操作:

  • 调整 YawPitchRoll 滑块,并观察在上面窗格中的位置。
  • 移动上面窗格中的设备表示,并观察 YawPitchRoll 以及得出的加速度值如何变化。

如需详细了解 yaw、pitch 和 roll 值的计算方式,请参阅计算设备的屏幕方向

如果要水平 (x) 或垂直 (y) 移动设备,请选择 Move 并执行以下其中一项操作:

  • 调整 XY 滑块,并观察在上面窗格中的位置。
  • 移动上面窗格中的设备表示,并观察 XY 滑块值以及得出的加速度计值如何变化。

如果要以 0 度、90 度、180 度或 270 度夹角放置设备,请执行以下操作:

  • Device rotation 区域,选择一个按钮以更改旋转方式。

当您对设备进行调整时,Resulting values 字段也会相应地发生变化。这些是应用可以访问的值。

如需详细了解这些传感器,请参阅传感器概览移动传感器位置传感器

Virtual sensors > Additional sensors

模拟器可以模拟各种位置传感器和环境传感器。 您可以通过模拟器调整下列传感器,以便使用应用对它们进行测试:

  • 环境温度传感器:此环境传感器用于测量环境的气温。
  • 磁场传感器:此位置传感器用于分别测量 X 轴、Y 轴和 Z 轴的环境磁场。测得的值以微特斯拉 (μT) 为单位。
  • 近程传感器:此位置传感器用于测量设备与某个对象的距离,例如,它可以通知手机脸部在接近以拨打电话。 必须在 AVD 中启用近程传感器,才能使用该控件。
  • 光传感器:此环境传感器用于测量光照。测得的值以勒克斯为单位。
  • 压力传感器:此环境传感器用于测量环境气压。 测得的值以毫巴 (hPa) 为单位。
  • 相对湿度传感器:此环境传感器用于测量环境的相对湿度。

如需详细了解这些传感器,请参阅传感器概览位置传感器环境传感器

错误报告 如果您在使用模拟器时遇到问题,可以准备并发送 bug 报告。模拟器会自动收集屏幕截图、日志和其他数据供用户生成 bug 报告。
录制和播放 请参阅屏幕录制
Google Play 如果 AVD 是包含 Play 商店应用的系统映像,则会显示 Google Play 服务版本信息。
Settings > General
  • Emulator window theme:选择 LightDark
  • Send keyboard shortcuts to:默认情况下,某些按键组合会触发模拟器控件快捷键。如果您开发的应用(例如面向带有蓝牙键盘的设备的应用)包含键盘快捷键,则可以更改此设置,将所有键盘输入发送到虚拟设备,包括在模拟器中属于快捷键的输入。
  • Screenshot save location:点击文件夹图标,指定一个位置来保存模拟器的屏幕截图。
  • Use detected ADB location:如果您是从 Android Studio 运行模拟器,请选择此设置(默认设置)。 如果您是从 Android Studio 之外运行模拟器,并且想让它使用特定的 adb 可执行文件,请取消选中此选项并指定 SDK 工具的位置。如果此设置不正确,则截取屏幕截图和拖放应用安装等功能将无法使用。
  • When to send crash reports:选择 AlwaysNeverAsk
  • Show window frame around device:默认情况下,带有设备皮肤文件的模拟器不显示周围的窗口框架。
Settings > Proxy

默认情况下,模拟器使用 Android Studio HTTP 代理设置。 您可以在此屏幕中为模拟器手动定义 HTTP 代理配置。要了解详情,请参阅结合使用模拟器和代理

Settings > Advanced
  • OpenGL ES renderer:选择图形加速类型 (此选项等同于 -gpu 命令行选项)。
    • Autodetect based on host:让模拟器根据计算机设置选择硬件或软件图形加速。它会检查 GPU 驱动程序是否与出现问题的已知 GPU 驱动程序匹配;如果匹配,模拟器会停用图形硬件模拟并改为使用 CPU。
    • ANGLE:(仅适用于 Windows)。使用 ANGLE Direct3D 在软件中渲染图形。
    • SwiftShader:使用 SwiftShader 在软件中渲染图形。
    • Desktop native OpenGL:在主机上使用 GPU。此选项通常速度最快。不过,某些驱动程序在渲染 OpenGL 图形时会出现问题,因此该选项可能不够可靠。
  • OpenGL ES API level:选择要在模拟器中使用的 OpenGL ES 最高版本。
    • Autoselect:让模拟器根据主机和客户机支持选择 OpenGL ES 版本。
    • Renderer maximum (up to OpenGL ES 3.1):尝试使用 OpenGL ES 的最高版本。
    • Compatibility (OpenGL ES 1.1/2.0):使用与大多数环境都兼容的 OpenGL ES 版本。
Help > Keyboard Shortcuts

此窗格提供了模拟器键盘快捷键的完整列表。要在使用模拟器时打开此窗格,请按 F1键(在 macOS 上,按 Command+ /)。

要使快捷键能使用,必须将 General 设置窗格中的 Send keyboard shortcuts 选项设置为 Emulator controls (default)

Help > Emulator Help

如需转到模拟器的在线文档,请点击 Documentation

如需提交有关模拟器的错误,请点击 Send feedback。 如需了解详情,请参阅如何报告模拟器错误

Help > About

查看模拟器使用的是哪个 adb 端口,以及 Android 和模拟器版本号。将最新可用的模拟器版本与您的版本进行比较,确定您是否安装了最新的软件。

模拟器序列号为 emulator-adb_port,您可以将其指定为 adb 命令行选项(举例而言)。

启动模拟器而不启动应用

有时,您可能希望在不运行应用的情况下启动模拟器,例如,您想查看两台模拟器设备通过蓝牙配对时如何交互。若要在不启动应用的情况下启动模拟器,请按以下步骤操作:

  1. 打开设备管理器
  2. 双击 AVD,或选择 AVD,然后点击 Run 图标 。 系统会加载 Android 模拟器。

在模拟器运行时,您可以运行 Android Studio 项目并选择模拟器作为目标设备。如下一部分所述,您还可以在模拟器上安装一个或多个 APK,然后运行它们。

安装和添加文件

如果您想在模拟器上使用 Google Play 商店中未提供的应用,可以手动安装 APK 文件。如需在模拟设备上安装 APK 文件,请将 APK 文件拖动到模拟器屏幕上。系统会显示 APK 安装程序对话框。安装完毕后,您可以在应用列表中查看该应用。

如需向模拟设备添加文件,请将该文件拖动到模拟器屏幕上。 系统会将该文件放在 /sdcard/Download/ 目录下。您可以在 Android Studio 中通过 Device File Explorer 查看该文件,也可以在设备上使用 DownloadsFiles 应用查找该文件,具体取决于设备的版本。

快照

快照是存储的 AVD 映像,它保留了保存映像时设备的完整状态,包括操作系统设置、应用状态和用户数据。您可以加载快照以恢复到保存的系统状态,这样能让您节省时间,无需等待虚拟设备上的操作系统和应用重启,也能让您节省将应用恢复到所需测试状态的精力。通过加载快照来启动虚拟设备很像从休眠状态唤醒实体设备,而不是从关机状态启动它。

每个 AVD 可以有一个快速启动快照和任意数量的一般快照。

如需利用快照,最简单的方法是使用快速启动快照:默认情况下,每个 AVD 都设为在退出时自动保存快速启动快照并在启动时从快速启动快照加载。

AVD 首次启动时,必须执行冷启动,就像设备开机一样。如果启用了快速启动,则系统会通过加载指定的快照来执行所有后续启动,并且系统会恢复到相应快照中保存的状态。

快照要在系统映像、AVD 配置以及保存时采用的模拟器功能均保持不变的情况下才有效。如果您在其中任一方面进行更改,受影响的 AVD 的所有快照都会变为无效。Android 模拟器、系统映像或 AVD 设置如有任何更新,都会重置 AVD 的已保存状态,因此在您下次启动 AVD 时,它必须执行冷启动。

用于保存、加载和管理快照的大多数控件都在 Snapshots 窗格的 SnapshotsSettings 标签页中。如果您在 Android Studio 的工具窗口中运行模拟器,Snapshots 窗格按钮将位于模拟器工具栏中。如果您是在 Android Studio 之外的独立窗口中运行模拟器,Snapshots 窗格位于 Extended controls 窗口中。

您还可以在从命令行启动模拟器时控制快速启动选项。

保存快速启动快照

您可以指定模拟器是否在关闭时自动保存快照。如需控制此行为,请按以下步骤操作:

  1. 打开快照设置。如果模拟器已嵌入到 Android Studio 中,请点击工具栏中的 Snapshots。如果模拟器在单独的窗口中,请打开 Extended controls 窗口。
  2. 在控件的 Snapshots 类别中,前往 Settings 标签页。
  3. Auto-save current state to Quickboot 菜单中选择以下某个选项:

    • Yes:关闭模拟器时始终保存 AVD 快照。这是默认值。

    • No:关闭模拟器时不保存 AVD 快照。

您的选择仅适用于当前打开的 AVD。在 ADB 处于离线状态时(例如,当 AVD 仍在启动时),您无法保存快照。

保存一般快照

虽然每个 AVD 只能有一个快速启动快照,但每个 AVD 可以有多个一般快照。

如需保存一般快照,请打开 Snapshots 窗格,然后点击右下角的 Take snapshot 按钮。

如需修改选定快照的名称和说明,请点击窗格底部的修改按钮

删除快照

如需手动删除快照,请打开 Snapshots 窗格,选择快照,然后点击窗格底部的删除按钮

您还可以指定是否希望模拟器在快照变为无效时(例如,当 AVD 设置或模拟器版本发生更改时)自动将其删除。默认情况下,模拟器会询问您是否希望删除无效快照。您可以使用 Snapshots 窗格的 Settings 标签页中的 Delete invalid snapshots 菜单更改此设置。

加载快照

如需随时加载快照,请打开模拟器的 Snapshots 窗格,选择 Snapshots 类别,选择一个快照,然后点击窗格底部的加载按钮

在 Android Studio 3.2 及更高版本中,每个设备配置都在 Virtual Device Configuration 对话框的高级设置中包含一个 Boot option 控件。您可以使用该控件来指定在启动该 AVD 时要加载哪个快照。

停用快速启动

如果您要停用快速启动功能,以便 AVD 始终执行冷启动,请执行以下操作:

  1. 依次选择 Tools > Device Manager,然后点击 Edit this AVD 图标
  2. 点击 Show Advanced Settings,然后向下滚动到 Emulated Performance
  3. 选择 Cold boot

冷启动一次

通过在设备管理器的 AVD 菜单中点击 Cold Boot Now,您可以执行一次冷启动,而不必完全停用快速启动功能。

快照要求和问题排查

  • 快照不适用于 Android 4.0.4(API 级别 15)或更低版本。
  • 快照不适用于 Android 8.0(API 级别 26)的 ARM 系统映像。
  • 如果模拟器未能通过快照完成启动,请在设备管理器中为相应 AVD 选择 Cold Boot Now,然后提交 bug 报告
  • 在启用软件渲染的情况下,快照将不可靠。如果快照不能正常工作,请在设备管理器中点击 Edit this AVD 图标 ,然后将 Graphics 更改为 HardwareAutomatic
  • 加载或保存快照的操作会占用大量内存。如果开始执行加载或保存操作时 RAM 可用空间不足,操作系统可能会将 RAM 的内容交换到硬盘,这将大大降低执行操作的速度。如果您发现快照的加载或保存速度很慢,则可以通过释放 RAM 来加快这些操作的速度。关闭不必要的应用是释放 RAM 的好方法。

Wi-Fi

当使用 API 级别为 25 或更高的 AVD 时,模拟器会提供模拟的 Wi-Fi 接入点(“AndroidWifi”),Android 也会自动与之连接。

您可以通过使用命令行参数 -feature -Wifi 运行模拟器,在模拟器中停用 WLAN。

限制

Android 模拟器没有以下各项的虚拟硬件:

  • 蓝牙
  • NFC
  • SD 卡插入/弹出
  • 连接到设备的耳机
  • USB

Wear OS 的手表模拟器不提供“Overview (Recent Apps)”按钮、方向键和指纹传感器。