Android 模拟器已知问题疑难解答

此页面列出了 Android 模拟器的已知问题、解决方法和疑难解答技巧。如果您遇到此处未列出的问题,或无法成功使用此处列出的解决方法,请报告错误

常规问题


Android 模拟器扩展控件中未显示 Google 地图

从 5 月中旬开始,34.2.13 之前的 Android 模拟器版本将不再在扩展控件中提供功能齐全的 Google 地图。较旧的模拟器附带与 Google 地图 Javascript API 不兼容的 Chromium 版本。

检查磁盘空间是否充足

为了避免因磁盘空间不足导致崩溃和挂起,模拟器在启动时会检查是否有足够的可用磁盘空间,并且除非至少有 5 GB 的可用空间,否则不会启动。如果模拟器无法启动,请检查是否有足够的可用磁盘空间。

防病毒软件

由于许多安全和防病毒软件包通过监控每个读写操作来工作,因此使用此类软件可能会降低 Android 模拟器等工具的性能。

许多防病毒软件包都提供了将特定应用程序添加到受信任应用程序列表的功能,这使得列出的应用程序能够在不降低性能的情况下运行。如果您在保存或加载 AVD 快照时遇到性能不佳的问题,可以通过将 Android 模拟器应用程序添加为防病毒软件中的受信任应用程序来提高性能。

性能影响因防病毒软件包而异。如果您除了操作系统自带的防病毒软件外还安装了其他防病毒软件,则可以运行简单的测试来确定哪个防病毒软件对模拟器加载和保存操作的性能影响更大。

某些防病毒软件可能与 Android 模拟器不兼容。

如果您使用的是 Avast 软件并且在运行 Android 模拟器时遇到问题,请在 Avast 的“故障排除”设置中禁用“在可用时使用嵌套虚拟化”和“启用硬件辅助虚拟化”。此外,在禁用 Avast 硬件虚拟化后,请确保再次正确设置 HAXM,并从 SDK Manager 中完全重新安装最新的 HAXM。

在 Windows 上,有时 AVD 会在使用 HAXM 时冻结,并且可以通过完全卸载 McAfee 来解决此问题。

Windows:可用 RAM 和提交电荷

模拟器启动时,需要初始化 Android 来宾操作系统的 RAM。在 Windows 上,模拟器会在启动时请求 Windows 考虑来宾内存的完整大小,即使在实际操作期间,内存可能会根据需要分页。模拟器在启动时请求完整的来宾内存量,因为 Windows 在确保有足够的物理 RAM 和页面文件可用以容纳整个潜在工作集方面非常保守。此请求为最坏情况做好了准备,即所有来宾内存都被快速访问,没有任何机会丢弃或释放内存。

有时,当模拟器要求 Windows 考虑此完整的来宾内存大小时,请求会超过当前的提交限制,即可用物理 RAM 和页面文件的总和。在这种情况下,Windows 无法保证最坏情况下的工作集适合物理 RAM 或页面文件,并且模拟器无法启动。

在典型情况下,为页面文件分配的硬盘空间加上物理 RAM 足以满足模拟器的大多数使用情况。但是,如果您遇到由于超过提交限制而导致模拟器无法启动的故障,我们建议检查当前的提交电荷,这可以在 Windows 任务管理器中的“性能”选项卡中看到。要打开任务管理器,请按 Ctrl+Shift+Esc。

以各种方式降低超过提交限制的可能性

  • 通过关闭未使用的应用程序和文件,在启动模拟器之前释放物理 RAM。
  • 禁用第三方内存管理和内存压缩实用程序。这些实用程序可能会导致提交电荷过高,并使您的系统更接近提交限制。
  • 对 Windows 页面文件使用系统管理大小,这可以更灵活和动态地增加页面文件大小,从而增加提交限制,以响应模拟器和其他应用程序的需求增加。

    有关提交电荷以及为什么灵活设置效果最佳的更多信息,请阅读这篇 Microsoft 文章

工具窗口中无法使用多点触控

当模拟器在工具窗口中运行时,多点触控手势(包括双指平移)不起作用。要启用多点触控,请在单独的窗口中启动模拟器

模拟器降低蓝牙音频输出质量

如果您使用的是蓝牙耳机,您可能会注意到当模拟器运行时蓝牙耳机音频输出质量会下降(问题 183139207)。发生这种情况是因为模拟器启动时会打开耳机的麦克风,这会导致耳机切换到双工模式,从而降低质量。

要避免此问题,请通过将hw.audioInput=no添加到 Android 虚拟设备 (AVD) 的config.ini文件中禁用模拟器中的麦克风。要查找 AVD 的config.ini文件,请转到设备管理器中的 AVD,点击其溢出菜单,然后选择“在磁盘上显示”。

Android 虚拟设备无法在 ChromeOS 上启动

在 ChromeOS 上,Android 虚拟设备 (AVD) 可能会无法启动,因为缺少libnss3依赖项。要成功启动 AVD,请运行sudo apt install libnss3手动安装libnss3库。

Wear OS 上的腕部倾斜传感器警告

在 Wear OS 上,模拟器可能会反复记录以下有关腕部倾斜传感器的消息:the host has not provided value yet for sensorHandle=16

开发者可以安全地忽略这些警告。

嵌入式模拟器窗口太小

在分辨率较低的机器上(例如 1024x768),当模拟器在 Android Studio 的工具窗口中运行时,可能难以读取模拟器屏幕。要为模拟器提供更多空间,请关闭打开的设备管理器工具窗口。您还可以将模拟器窗口从 Android Studio 中拉出。为此,请在模拟器窗口中,点击设置 > 视图模式,然后选择窗口而不是停靠固定

图形问题


Android 模拟器在更新后运行缓慢

许多外部因素会导致 Android 模拟器在更新后开始运行缓慢。要开始进行故障排除,我们建议执行以下步骤

  • 如果您有英特尔 GPU(特别是英特尔 HD 4000),请确保您已下载并安装了最新的英特尔显卡驱动程序。
  • 如果您的机器同时具有英特尔 GPU 和独立 GPU,请在设备管理器中禁用英特尔 GPU,以确保您正在使用独立 GPU。
  • 使用-gpu swiftshader模式运行模拟器。有关在命令行上配置图形加速选项的更多信息,请参阅配置硬件加速
  • 如果您没有 IPv6 连接,请确保您的路由器未使用 IPv6 地址。

如果您仍然遇到 Android 模拟器运行缓慢的问题,请报告错误,并包含必要的 Android 模拟器详细信息,以便我们进行调查。

错误:找不到 vulkan-1.dll

如果模拟器由于错误vulkan-1.dll cannot be found而无法启动,则可能需要更新模拟器。要在 Android Studio 中更新模拟器,请转到工具 > SDK Manager并安装最新稳定版本的 Android 平台。

或者,如果您不需要任何使用Vulkan图形库的应用程序,请通过从命令行启动模拟器并使用标志-feature -Vulkan关闭 Vulkan。

无法创建快照

创建包含Vulkan图形库的模拟器快照不受支持。要运行不使用 Vulkan 的模拟器,请从命令行启动模拟器并使用标志-feature -Vulkan。或者,如果您想将快照用作开发工作流程的一部分,则可以卸载并避免使用具有 Vulkan 的应用程序,例如 API 30 或更高版本上的 Chrome。

无法正确打开网页

从 API 级别 30 开始,Chrome 使用Vulkan图形库作为其渲染后端,并且在某些机器上可能会存在兼容性问题。如果 Chrome 未能为您正确呈现,请尝试从命令行启动模拟器并使用标志-feature -Vulkan

GPU 驱动程序警告 - 回退到软件

如果您收到有关 GPU 驱动程序回退的警告,则您可能正在使用不受支持的 GPU。默认情况下,它使用自动模式,这可能会选择软件渲染。如果您选择硬件,则应该能够强制它使用硬件渲染(它可能仍然会弹出警告消息)。

对于非 Play 商店镜像,您可以在设备管理器 -> 3 个点 -> 编辑中执行此操作。对于 Play 商店镜像,您需要手动编辑这两个配置文件

~/.android/your_avd_name.avd/config.ini

~/.android/your_avd_name.avd/hardware-qemu.ini

并将hw.gpu.mode更改为host

请注意,这样做可能会降低模拟器的稳定性。有关更多详细信息,请参阅错误

模拟器无法在 Windows Chrome 远程桌面启动

如果在 Windows 上使用 Chrome 远程桌面时模拟器无法启动,则当前建议的解决方法是使用 -gpu 标志,例如 -gpu host 或 -gpu swiftshader。

网络问题


无互联网:找不到服务器 DNS 地址

如果模拟器无法连接到互联网,请尝试从命令行启动模拟器并使用选项-dns-server “2001:4860:4860::8844,2001:4860:4860::8888,8.8.8.8,8.8.4.4”。此命令提供 Google 公共 DNS IP 地址的逗号分隔列表。有关 Google 公共 DNS 的更多信息,请参阅Google 公共 DNS for your devices

无互联网:DNS 解析问题

有时/etc/resolv.conf文件中的 DNS 地址无法正常工作。您可以通过从命令行启动模拟器并使用选项-dns-server 8.8.8.8-dns.server 2001:4860:4860::8888来解决此问题,以通过仅 IPv6 网络连接。

旧问题(在已弃用的模拟器或旧系统上)


无法启动 AVD

如果存在较新模拟器的崩溃报告,则 AVD 可能会无法启动(问题 #281725854)。此问题仅发生在从 canary 版本 33.x 更新到 32.1.13 的用户身上,他们在上次运行 33.x 版本时发生了崩溃,并且此后没有重新启动他们的 AVD,因此%TEMP%/tmp目录仍然存在。如果您遇到此问题,请尝试清除%TEMP%目录(Linux 或 macOS 上的/tmp)。

Windows:如果 AVD 名称中包含 Unicode,则模拟器无法启动

在 Windows 上,当设备管理器创建 Android 虚拟设备 (AVD) 时,它默认在C:\Users\<name>\.android\avd中创建 AVD。但是,如果 AVD 名称(<name>)包含 Unicode,则模拟器无法使用此默认位置正确启动 AVD。

此问题已在 Emulator 31.3.6 及更高版本中修复。要解决此问题,请通过选择工具 > SDK Manager更新模拟器。

或者,要解决此问题,请在创建 AVD 之前将环境变量ANDROID_SDK_HOME设置为自定义目录。例如,创建目录C:\Android\home,然后将ANDROID_SDK_HOME设置为此新创建的目录。要了解更多信息,请参阅环境变量

虚拟机管理程序无法模拟 x86 Android 系统所需的某些 CPU 功能

虚拟机管理程序通常无法模拟某些 CPU 功能,例如 x86 Android 系统所需的流式 SIMD 扩展 (SSE)