本页面列出了 Android 模拟器的已知问题、解决方法和故障排除提示。如果您遇到此处未列出的问题,或者无法成功使用此处列出的解决方法,请报告错误。
一般问题
Google 地图未在 Android 模拟器扩展控件中显示
从 5 月中旬开始,34.2.13 版本之前的 Android 模拟器将无法在扩展控件中正常使用 Google 地图。较旧的模拟器随附的 Chromium 版本与 Google 地图 JavaScript API 不兼容。
检查足够的磁盘空间
为避免因可用磁盘空间不足而导致崩溃和卡顿,模拟器会在启动时检查是否有足够的可用磁盘空间,并且只有在可用空间至少达到 5 GB 时才会启动。如果模拟器无法启动,请检查您是否有足够的可用磁盘空间。
防病毒软件
由于许多安全和防病毒软件包的工作方式是监控每一次读写操作,因此使用此类软件会降低 Android 模拟器等工具的性能。
许多防病毒软件包都提供了将特定应用添加到可信应用列表的功能,这使得列出的应用能够以不降低性能的方式运行。如果您在保存或加载 AVD 快照时遇到性能不佳的问题,您可以通过将 Android 模拟器应用添加到防病毒软件的可信应用列表中来提高此性能。
不同的防病毒软件包对性能的影响有所不同。如果您安装了操作系统附带之外的其他防病毒软件,您可以运行简单的测试,以确定哪个防病毒软件对模拟器加载和保存操作的性能影响更大。
某些防病毒软件可能与 Android 模拟器不兼容。
如果您正在使用 Avast 软件并且在运行 Android 模拟器时遇到问题,请在 Avast 的问题排查设置中停用在可用时使用嵌套虚拟化和启用硬件辅助虚拟化。此外,在 Avast 硬件虚拟化停用后,请务必从 SDK Manager 完整重新安装最新 HAXM,以确保 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 模拟器在更新后运行缓慢。要开始排查问题,我们建议您采取以下步骤
- 如果您有 Intel GPU(特别是 Intel HD 4000),请确保您已下载并安装最新的 Intel 显卡驱动程序。
- 如果您的机器同时有 Intel GPU 和独立 GPU,请在设备管理器中停用 Intel GPU,以确保您使用的是独立 GPU。
- 使用
-gpu swiftshader
模式运行模拟器。如需详细了解如何在命令行上配置图形加速选项,请参阅配置硬件加速。 - 如果您没有 IPv6 连接,请确保您的路由器未使用 IPv6 地址。
如果您仍然遇到 Android 模拟器运行缓慢的问题,请报告错误并提供必要的 Android 模拟器详细信息,以便我们进行调查。
错误:找不到 vulkan-1.dll
如果模拟器因“vulkan-1.dll cannot be found
”错误而无法启动,您可能需要更新模拟器。要在 Android Studio 中更新模拟器,请依次前往“工具 > SDK 管理器”,并安装最新稳定版 Android 平台。
此外,如果您不需要任何使用 Vulkan 图形库的应用,您可以通过在命令行中使用 -feature -Vulkan
标志启动模拟器来关闭 Vulkan。
无法创建快照
不支持创建包含 Vulkan 图形库的模拟器快照。要在不使用 Vulkan 的情况下运行模拟器,请在命令行中使用 -feature -Vulkan
标志启动模拟器。另外,如果您希望将快照作为开发工作流的一部分,则可以卸载并避免使用带 Vulkan 的应用,例如 API 30 或更高版本上的 Chrome。
无法正确打开网页
从 API 级别 30 开始,Chrome 使用 Vulkan 图形库作为其渲染后端,这可能会在某些机器上导致兼容性问题。如果 Chrome 未正确渲染,请尝试在命令行中使用 -feature -Vulkan
标志启动模拟器。
GPU 驱动程序警告 - 回退到软件渲染
如果您收到 GPU 驱动程序回退的警告,您使用的 GPU 可能不受支持。默认情况下,它会使用自动模式,这可能会选择软件渲染。如果您选择硬件模式,则应该能够强制其使用硬件渲染(可能仍会弹出警告消息)。
对于非 Play 商店映像,您可以在设备管理器中通过“三个点 -> 修改”进行操作。对于 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。
模拟器在 macOS 硬件渲染模式下行为异常
在配备 Apple 芯片的 Mac 设备上,当选择硬件渲染模式时,模拟器会使用 MoltenVK 库来处理 Vulkan API。虽然 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 网络连接。
旧问题(在已废弃的模拟器或旧系统上)
无法启动 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。
此问题已在模拟器 31.3.6 及更高版本中修复。要解决此问题,请依次选择“工具 > SDK 管理器”来更新模拟器。
另外,要解决此问题,请在创建 AVD 之前将环境变量 ANDROID_SDK_HOME
设置为自定义目录。例如,创建目录 C:\Android\home
,然后将 ANDROID_SDK_HOME
设置为这个新创建的目录。要了解详情,请参阅环境变量。
虚拟机监控程序无法模拟 x86 Android 系统所需的某些 CPU 功能
虚拟机监控程序通常无法模拟某些 CPU 功能,例如 流式 SIMD 扩展 (SSE),这些功能是 x86 Android 系统所需的。