除了基本的触摸屏手势和手机动作之外,您可能还需要在虚拟设备上测试应用的其他功能,例如,您可能想要模拟不同的位置或网络条件。本页将介绍模拟器高级功能以及使用 Android Studio 启动模拟器的不同方式。
本部分的其他页面介绍了使用模拟器的更多高级方式,这些方式需要您使用终端。这些更具体的用例包括:
- 如果您不使用 Android Studio,则可以从命令行启动模拟器。
- 如需测试指纹验证等功能或更改虚拟设备的电池状态,您可以发送模拟器控制台命令。
- 如果您想要获得两个可相互通信的模拟器实例,或者设置其他复杂的网络架构,则可以设置模拟器网络。
对于大多数应用开发者来说,基本模拟器导航功能和本页上的各项功能可以满足您的测试需求。如需并排比较与模拟器交互时能够使用的模拟器功能,请参阅模拟器功能比较。
屏幕截图
如需对虚拟设备进行截屏,请点击 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 标签页底部。若要保存视频,请从该标签页底部的菜单中选择 WebM 或 GIF,然后点击 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。然后,按照以下步骤来使用模拟器宏:
- 在模拟器正在运行且已将您的应用连接到 ARCore 的情况下,点击模拟器面板中的 More 图标
。
- 依次选择 Record and Playback > Macro Playback。
选择要使用的宏,然后点击 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”图标 设备的位置信息控件会组织到两个标签页下:Single points 和 Routes。 Single points 在 Single points 标签页中,您可以使用 Google 地图 WebView 搜索地图注点,就像在手机或浏览器中使用 Google 地图时一样。当您在地图上搜索(或点击)某个地点时,可以通过选择地图底部附近的 Save point 来保存该地点。您保存的所有地点都会列在 Extended controls 窗口的右侧。 如需将模拟器位置设置为您在地图上选择的地点,请点击 Extended controls 窗口右下角附近的 Set location 按钮。 Routes 与 Single points 标签页类似,Routes 标签页提供的 Google 地图 WebView 可用于在两个或多个地点之间创建路线。如需创建并保存路线,请执行以下操作:
如需让模拟器按照您保存的路线模拟导航,请从 Saved routes 中选择路线,然后点击 Extended controls 窗口右下角附近的 Play route。如需停止模拟,请点击 Stop route。 如需继续让模拟器模拟指定的路线,请打开 Repeat playback 旁边的开关。如需更改模拟器模拟指定路线的速度,请从 Playback speed 菜单中选择一个选项。 导入 GPX 和 KML 数据 如需使用 GPS 交换格式 (GPX) 的文件或 Keyhole 标记语言 (KML) 文件中的地理数据,请执行以下操作:
速度默认采用 Delay 值 (Speed 1X)。您可以将速度设为两倍 (Speed 2X)、三倍 (Speed 3X),等等。 |
显示屏 |
通过模拟器,您可以将应用部署到多个屏幕,这些屏幕支持可自定义的维度,并且可以帮助您测试支持多窗口和多屏幕的应用。在虚拟设备运行时,您最多可以添加两个额外的屏幕,如下所示:
|
移动网络 | 您可以使用模拟器模拟各种网络条件。您可以大致确定不同网络协议的速度,也可以指定一个 Full 值,以便以计算机所支持的最大速度传输数据。指定任何一种网络协议后的传输速度都比 Full 慢。您还可以指定语音和数据网络状态,例如漫游。默认值在 AVD 中设置。 在 Network type 下选择一种类型:
选择 Signal strength:
选择 Voice status 和/或 Data status:
|
电池 | 您可以模拟设备的电池属性,了解应用在不同条件下的运行情况。如需选择 Charge level,请使用滑块控件。 选择一个 Charger connection 值:
选择一个 Battery health 值:
选择一个 Battery status 值:
|
相机 | 打开模拟器相机时,您可以将图片加载到模拟的场景中。如需了解详情,请参阅 ARCore 文档中的向场景添加增强图像。 |
手机 | 您可以使用模拟器模拟来电和短信。 如需呼叫模拟器,请执行以下操作:
如需向模拟器发送短信,请执行以下操作:
|
Directional Pad | 如果 AVD 在硬件配置文件中已启用方向键,您可以将方向键控件与模拟器搭配使用。不过,并非所有设备都支持方向键;例如,Android 手表就不行。 这些按钮可以模拟以下操作: ![]() |
麦克风 | 当 Virtual microphone uses host audio input 开启时,模拟器从主机麦克风接收音频输入;否则,模拟器将不会接收任何音频输入。Virtual headset plug inserted、Virtual headset has microphone 和 Voice Assist 选项目前尚未实现。 |
指纹 | 该控件可以模拟 10 种不同的指纹扫描。您可以使用它测试应用中的指纹集成情况。Android 5.1(API 级别 22)及更低版本以及 Wear OS 不支持此功能。 如需在虚拟设备上模拟指纹扫描,请执行以下操作:
|
Virtual sensors > Device Pose |
您可以使用该控件针对设备位置和/或屏幕方向的变化对应用进行测试。例如,您可以模拟倾斜和旋转等手势。加速度计不会跟踪设备的绝对位置,只会检测何时发生变化。该控件可以模拟加速度计和磁力计传感器在您移动或旋转真实的设备时会如何响应。 您必须在 AVD 中启用加速度计传感器,才能使用该控件。 该控件通过 x 轴、y 轴和 z 轴的值报告 该控件还报告 如需围绕 x 轴、y 轴和 z 轴旋转设备,请选择 Rotate 并执行以下其中一项操作:
如需详细了解 yaw、pitch 和 roll 值的计算方式,请参阅计算设备的屏幕方向。 如果要水平 (x) 或垂直 (y) 移动设备,请选择 Move 并执行以下其中一项操作:
如果要以 0 度、90 度、180 度或 270 度夹角放置设备,请执行以下操作:
当您对设备进行调整时,Resulting values 字段也会相应地发生变化。这些是应用可以访问的值。 |
Virtual sensors > Additional sensors | 模拟器可以模拟各种位置传感器和环境传感器。 您可以通过模拟器调整下列传感器,以便使用应用对它们进行测试:
|
错误报告 | 如果您在使用模拟器时遇到问题,可以准备并发送 bug 报告。模拟器会自动收集屏幕截图、日志和其他数据供用户生成 bug 报告。 |
录制和播放 | 请参阅屏幕录制。 |
Google Play | 如果 AVD 是包含 Play 商店应用的系统映像,则会显示 Google Play 服务版本信息。 |
Settings > General |
|
Settings > Proxy | 默认情况下,模拟器使用 Android Studio HTTP 代理设置。 您可以在此屏幕中为模拟器手动定义 HTTP 代理配置。要了解详情,请参阅结合使用模拟器和代理。 |
Settings > Advanced |
|
Help > Keyboard Shortcuts | 此窗格提供了模拟器键盘快捷键的完整列表。要在使用模拟器时打开此窗格,请按 F1键(在 macOS 上,按 Command+ /)。 要使快捷键能使用,必须将 General 设置窗格中的 Send keyboard shortcuts 选项设置为 Emulator controls (default)。 |
Help > Emulator Help | 如需转到模拟器的在线文档,请点击 Documentation。 如需提交有关模拟器的错误,请点击 Send feedback。 如需了解详情,请参阅如何报告模拟器错误。 |
Help > About | 查看模拟器使用的是哪个 模拟器序列号为 emulator-adb_port,您可以将其指定为 |
启动模拟器而不启动应用
有时,您可能希望在不运行应用的情况下启动模拟器,例如,您想查看两台模拟器设备通过蓝牙配对时如何交互。若要在不启动应用的情况下启动模拟器,请按以下步骤操作:
- 打开设备管理器。
- 双击 AVD,或选择 AVD,然后点击 Run 图标
。 系统会加载 Android 模拟器。
在模拟器运行时,您可以运行 Android Studio 项目并选择模拟器作为目标设备。如下一部分所述,您还可以在模拟器上安装一个或多个 APK,然后运行它们。
安装和添加文件
如果您想在模拟器上使用 Google Play 商店中未提供的应用,可以手动安装 APK 文件。如需在模拟设备上安装 APK 文件,请将 APK 文件拖动到模拟器屏幕上。系统会显示 APK 安装程序对话框。安装完毕后,您可以在应用列表中查看该应用。
如需向模拟设备添加文件,请将该文件拖动到模拟器屏幕上。
系统会将该文件放在 /sdcard/Download/
目录下。您可以在 Android Studio 中通过 Device File Explorer 查看该文件,也可以在设备上使用 Downloads 或 Files 应用查找该文件,具体取决于设备的版本。
快照
快照是存储的 AVD 映像,它保留了保存映像时设备的完整状态,包括操作系统设置、应用状态和用户数据。您可以加载快照以恢复到保存的系统状态,这样能让您节省时间,无需等待虚拟设备上的操作系统和应用重启,也能让您节省将应用恢复到所需测试状态的精力。通过加载快照来启动虚拟设备很像从休眠状态唤醒实体设备,而不是从关机状态启动它。
每个 AVD 可以有一个快速启动快照和任意数量的一般快照。
如需利用快照,最简单的方法是使用快速启动快照:默认情况下,每个 AVD 都设为在退出时自动保存快速启动快照并在启动时从快速启动快照加载。
AVD 首次启动时,必须执行冷启动,就像设备开机一样。如果启用了快速启动,则系统会通过加载指定的快照来执行所有后续启动,并且系统会恢复到相应快照中保存的状态。
快照要在系统映像、AVD 配置以及保存时采用的模拟器功能均保持不变的情况下才有效。如果您在其中任一方面进行更改,受影响的 AVD 的所有快照都会变为无效。Android 模拟器、系统映像或 AVD 设置如有任何更新,都会重置 AVD 的已保存状态,因此在您下次启动 AVD 时,它必须执行冷启动。
用于保存、加载和管理快照的大多数控件都在 Snapshots 窗格的 Snapshots 和 Settings 标签页中。如果您在 Android Studio 的工具窗口中运行模拟器,Snapshots 窗格按钮将位于模拟器工具栏中。如果您是在 Android Studio 之外的独立窗口中运行模拟器,Snapshots 窗格位于 Extended controls 窗口中。
您还可以在从命令行启动模拟器时控制快速启动选项。
保存快速启动快照
您可以指定模拟器是否在关闭时自动保存快照。如需控制此行为,请按以下步骤操作:
- 打开快照设置。如果模拟器已嵌入到 Android Studio 中,请点击工具栏中的 Snapshots。如果模拟器在单独的窗口中,请打开 Extended controls 窗口。
- 在控件的 Snapshots 类别中,前往 Settings 标签页。
在 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 始终执行冷启动,请执行以下操作:
- 依次选择 Tools > Device Manager,然后点击 Edit this AVD 图标
。
- 点击 Show Advanced Settings,然后向下滚动到 Emulated Performance。
- 选择 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 更改为 Hardware 或 Automatic。
- 加载或保存快照的操作会占用大量内存。如果开始执行加载或保存操作时 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)”按钮、方向键和指纹传感器。