排查 Android Emulator 的已知问题

本页面列出了 Android Emulator(Android 模拟器)的已知问题、权宜之计和故障排除提示。如果您遇到未列出的问题,或者无法使用此处列出的权宜之计,请报告错误

常规问题


Android Emulator 扩展控件中的 Google 地图不显示

从 5 月中旬开始,34.2.13 版本之前的 Android Emulator 将无法再在扩展控件中使用 Google 地图。旧版本的模拟器附带的 Chromium 版本与 Google 地图 JavaScript API 不兼容。

检查磁盘空间是否充足

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

杀毒软件

由于许多安全软件和杀毒软件通过监控每一次读写操作来工作,使用此类软件可能会降低 Android Emulator 等工具的性能。

许多杀毒软件允许将特定应用程序添加到受信任应用程序列表中,这使得所列出的应用程序能够在不降低性能的情况下运行。如果您在保存或加载 AVD 快照时遇到性能不佳的问题,可以通过将 Android Emulator 应用程序添加为杀毒软件中的受信任应用程序来改善这种性能。

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

某些杀毒软件可能与 Android Emulator 不兼容。

如果您在使用 Avast 软件并遇到 Android 模拟器运行问题,请在 Avast 的疑难解答 (Troubleshooting) 设置中禁用启用嵌套虚拟化 (Use nested virtualization when available)启用硬件辅助虚拟化 (Enable Hardware assisted virtualization)。此外,在禁用 Avast 硬件虚拟化后,请确保通过从 SDK Manager 重新安装最新版本的 HAXM 来重新正确配置 HAXM。

在 Windows 上,AVD 有时会因 HAXM 而死机,彻底卸载 McAfee 可以解决此问题。

Windows:可用 RAM 和提交费用 (Commit charge)

当模拟器启动时,它需要初始化 Android 来宾操作系统的 RAM。在 Windows 上,模拟器在启动时会要求 Windows 为整个来宾内存大小预留空间,尽管在实际运行过程中,内存可能会按需分页。模拟器在启动时请求全部来宾内存是因为 Windows 在确保有足够的物理 RAM 和页面文件来容纳整个潜在工作集方面较为保守。此请求是为了应对最坏的情况,即所有来宾内存被快速访问而没有任何机会丢弃或释放内存。

有时,当模拟器要求 Windows 为这个完整的来宾内存大小进行核算时,该请求会超过当前的提交限制 (commit limit),即可用物理 RAM 和页面文件的总和。在这种情况下,Windows 无法保证最坏情况下的工作集能放入物理 RAM 或页面文件中,导致模拟器无法启动。

通常情况下,分配给页面文件的硬盘空间加上物理 RAM 对于大多数模拟器使用场景来说绰绰有余。但是,如果您因为超过提交限制而导致模拟器启动失败,我们建议检查当前的提交费用,这可以在 Windows 任务管理器的性能 (Performance) 选项卡中查看。要打开任务管理器,请按 Ctrl+Shift+Esc。

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

  • 在启动模拟器之前,通过关闭未使用的应用程序和文件来释放物理 RAM。
  • 禁用第三方内存管理和内存压缩工具。这些工具可能会导致效率低下的额外提交费用,并使系统更接近提交限制。
  • 为 Windows 页面文件使用系统管理大小 (system managed size),这样可以更灵活、动态地增加页面文件大小,从而根据模拟器和其他应用程序不断增加的需求增加提交限制。

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

工具窗口中的多点触控无法工作

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

模拟器导致蓝牙音频输出质量下降

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

为了避免这个问题,请通过在 Android 虚拟设备 (AVD) 的 config.ini 文件中添加 hw.audioInput=no 来禁用模拟器中的麦克风。要找到 AVD 的 config.ini 文件,请进入 Device Manager(设备管理器)中的 AVD,点击溢出菜单,然后选择在磁盘上显示 (Show on Disk)

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 的工具窗口中运行时,可能很难看清屏幕。为了给模拟器提供更多空间,如果 Device Manager 工具窗口处于打开状态,请将其关闭。您也可以将模拟器窗口从 Android Studio 中拉出。为此,在模拟器窗口中,点击 Settings > View Mode 并选择 Window 而不是 Dock Pinned

图形问题


更新后 Android Emulator 运行缓慢

许多外部因素可能导致 Android Emulator 在更新后运行缓慢。我们建议采取以下步骤进行故障排除:

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

如果 Android Emulator 运行仍然缓慢,请报告错误并附上必要的 Android Emulator 详细信息,以便我们进行调查。

错误:找不到 vulkan-1.dll

如果模拟器因错误 vulkan-1.dll cannot be found 而无法启动,您可能需要更新模拟器。要在 Android Studio 中更新模拟器,请转到 Tools > 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。

模拟器以退出代码 -1073741511 终止(Windows 8.1 或 Windows 10 N)

原因很可能是您的系统(例如 C:\Windows\System32,64 位系统)缺少 msvcp140.dll、msvcp140_1.dll 和 msvcp140_2.dll。过去,报告此问题的用户可以通过安装(或重新安装)Windows Media Feature 来解决该问题,这是 Windows 10 N 版本中的可选功能。

Windows 8.1 上也可能出现类似问题。

请查看 Microsoft 网站以了解如何安装 Windows Media Feature。

请注意,Windows 8.1 已不再受 Android Studio 和 Android Emulator 以及 Microsoft(自 2023 年起)的支持。关于 Windows 10 的评论也类似,Microsoft 宣布 Windows 10 的支持将于 2025 年 10 月 14 日结束。虽然我们了解在 Windows 8.1/Windows 10 上寻求解决方案的需求,但继续为旧版操作系统开发和提供支持所面临的挑战可能会影响大多数用户使用模拟器的稳定性和性能。

作为一种可能的权宜之计(但不提供支持),如果您无法升级操作系统,可以尝试从我们的存档(https://developer.android.com/studio/emulator_archive,最后一个稳定版本为 32.1.11)中查找可能与 Windows 8.1 兼容的旧版本 Android Emulator。请注意,这些较低版本不受支持,可能无法正常工作,我们强烈建议不要将它们与较新版本的 Android(如 API 34 及以上)一起使用。

为了获得最佳的 Android Emulator 体验,我们建议升级到受支持的操作系统。

由此带来的不便,我们深表歉意。

模拟器在 macOS 上硬件渲染模式下表现异常

在使用 Apple Silicon 的 Mac 设备上,当选择硬件渲染模式时,模拟器会针对 Vulkan API 使用 MoltenVK 库。虽然 MoltenVK 通常提供更好的性能,但该库并不支持所有 Vulkan 功能。如果遇到兼容性问题(如着色器编译失败、图形故障或应用程序崩溃),请通过 AVD 设置将渲染模式更改为软件,或使用 -gpu swiftshader 命令行参数。

或者,您可以使用 -feature -Vulkan 参数禁用 Vulkan 支持,以继续在 GLES 应用程序上使用硬件加速。

网络问题


无互联网连接:找不到服务器 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

无互联网连接:DNS 解析问题

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

无互联网连接:MAC 地址冲突问题

如果多个模拟器具有相同的 MAC 地址,则只有第一个启动的模拟器可以访问互联网。如果模拟器在创建时被分配了相同的 ADB 端口,或者它们是从同一个快照启动的,就会发生这种情况。

要解决此问题,您可以清除第二个 AVD 上的数据或创建一个新的 AVD。

命令行网络配置 (-netsim-args) 的限制

您只能在启动第一个模拟器实例时应用通过 -netsim-args 指定的命令行网络设置。模拟器会将这些设置应用于随后启动的任何模拟器。您无法为同时运行的多个模拟器使用命令行参数配置不同的网络设置。

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


无法启动 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 及更高版本中修复。要解决此问题,请通过选择 Tools > SDK Manager 来更新模拟器。

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

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

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