安装 WSL2 后,Android Studio 模拟器无法在 Windows 11 上运行
Posted
技术标签:
【中文标题】安装 WSL2 后,Android Studio 模拟器无法在 Windows 11 上运行【英文标题】:Android Studio Emulator is not working on Windows 11 when WSL2 is installed 【发布时间】:2021-10-20 11:40:58 【问题描述】:设置:
Windows 11 家庭版 21H2 22000.132 AMD 锐龙 5900X WSL2 android Studio 最新版本(也尝试了最新的测试版)问题: 一旦我安装了 WSL2,模拟器就会停止工作。它给出以下错误消息:
C:\Users\gusta\AppData\Local\Android\Sdk\emulator>emulator.exe -avd Android_TV_1080p_API_300
emulator: Android emulator version 30.8.4.0 (build_id 7600983) (CL:N/A)
handleCpuAcceleration: feature check for hvf
added library vulkan-1.dll
Failed to open /qemu.conf, err: 2
C:\Users\gusta\AppData\Local\Android\Sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: WHPX: Failed to setup partition, hr=c0350005
C:\Users\gusta\AppData\Local\Android\Sdk\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: failed to initialize WHPX: Invalid argument
与 Android 模拟器同时使用 WSL2 之前在 Intel i7 4770k 处理器上运行,但在处理器升级到 AMD Ryzen 5900x 并全新安装 Windows 11 后停止运行。
澄清一下:我不是试图从 WSL2 运行模拟器,而是试图从 Android Studio 运行它。当尝试从 Android Studio 启动它时,它永远不会启动,当尝试从 Windows 命令行运行它时,我收到上述错误。
“无法打开/qemu.conf”可以通过手动创建该文件来解决,如this 答案所述。然而,这并不能解决 WHPX 之后的两个错误。
我已经按照this 页面上的官方说明进行操作(在 AMD 之后使用 Hyper-V 选项 WHPX)。如果我没记错的话,我认为问题与 WSL2 正在使用的 Hyper-V 运行有关。但是根据上面的链接,应该可以在使用 WHPX 的 Hyper-V 的同时运行模拟器。我还尝试使用适用于 AMD 处理器的 Android Emulator Hypervisor Driver,结果完全相同。
已激活的 Windows 功能:
感谢您的帮助,如果我需要添加更多信息,请告诉我
【问题讨论】:
有同样的问题。错误后尝试禁用 WSL 无济于事。目前我无法以任何加速度启动模拟器。 另一方面,我可以用./emulator -no-accel -avd Pixel_3_API_30_Play
成功启动模拟器...但是没有加速它不能忍受使用。欢迎任何帮助!
这很有趣。没有尝试过无加速。当我下班回来时会这样。但正如你所说,如果没有加速,它可能不是一个有效的解决方法
【参考方案1】:
较新的答案
我发现并测试了较短的切换机制。
Windows 功能的配置:
Windows Subsystem for Linux
已安装。
Windows Hypervisor Platform
已安装。
Hyper-V
已安装。
如果你需要模拟器,你只需要关闭 Hypervisor + Restart。运行:bcdedit /set hypervisorlaunchtype off
如果您需要 Docker,您可以运行虚拟机管理程序,从而禁用模拟器。运行:bcdedit /set hypervisorlaunchtype auto
设置Hypervisor后需要重启
您不能同时运行两者。另一个值得在下面我的旧答案中查看How about running docker?
的论坛。
旧答案
我想我解决了这个问题,经过测试可以从 CMD / Android Studio 运行,并且像安装 WSL 之前一样完美运行。我们有几个步骤:
配置 Windows 功能:
-
已删除
Windows Subsystem for Linux
删除Windows Hypervisor Platform
删除Hyper-V
这是我目前的设置:
恢复 AVD 设置
我知道在移除后会有一些可能性,因为 AVD 仍然会出现与以前相同的错误,并且预计会进入 WSL。跑的时候跌跌撞撞发现了点东西:
C:\Users\[NAME]\AppData\Local\Android\Sdk\emulator\emulator-check.exe accel
该命令将检查当前的加速度。它解释了需要关闭 Hypervisor 并提供具体帮助:
运行bcdedit /set hypervisorlaunchtype off
。
运行 bcdedit 后,我重新启动,一切都恢复了。现在我可以完美地从 CMD 和 Android Studio 运行模拟器了。
运行 docker 怎么样?
可悲的事实,是的,你不能同时运行这两个 pararel。这个论坛有几种解决方法:
How can I run both Docker and Android Studio Emulator on Windows?
有几个选项,包括更改模拟器、在需要时使用上述步骤添加和删除 docker、创建嵌套 vm 等。我个人现在的选择是暂时使用另一个模拟器并为后者删除 docker。
【讨论】:
谢谢!所以根据你的发现,有没有办法同时运行 WSL2 和 android 模拟器?您知道这是否只是 AMD 处理器的问题吗? 不,据我所知,这不是处理器问题。有几个论坛提出 AMD 是这里和那里的问题。但我相信英特尔处理器也有同样的问题。根本原因在于 AVD Emulator 和 Docker 中的虚拟化机制。此问题仅在 Windows 中触发。在 Linux 中,Docker + AVD Emulator 可以并行运行,因为 Linux 中的 AVD Emulator 使用隔离虚拟化。所以是的 Windows 虚拟化问题和 Docker / AVD Emulator 虚拟化的兼容性。【参考方案2】:此问题由 Google 错误 https://issuetracker.google.com/issues/202188690 跟踪
【讨论】:
该错误在 Google 方面的优先级不是很高。如果人们可以评论他们也遇到问题的错误,那么 Google 可能会提高优先级。【参考方案3】:这个问题只发生在 AMD 处理器上,我有两个系统,在最新的 Windows 11(Insider Beta)版本上运行 WSL2 和 Docker。一个是 AMD Ryzen 5950,一个是 Intel i7-8086K。 在 Intel 系统上,模拟器在硬件加速以及 WSL2 和 Docker 的情况下运行良好。
在 AMD 上,我在使用硬件加速运行模拟器时遇到了同样的错误。在 Windows 11 之前的 Windows 10 Insider 版本中,它仍然有效。
之前在 Windows 10 build 10.0.21292 中引入了一个非常相似的问题 后来在 build 21327 中修复。(https://github.com/microsoft/WSL/issues/6471) 但是这个问题同时影响了 Intel 和 AMD。
我还没有尝试关闭 AMD fTPM,因为这是除了将 Windows 10 Insider(开发环)更新到 Windows 11 之外的唯一其他变化。
适用于 AMD 处理器的 Android Emulator Hypervisor 驱动程序仅在禁用 Windows Hypervisor 时工作,它不用于 WHPX。
Windows 反馈中充满了有关此问题的报告,请点赞。
【讨论】:
【参考方案4】:Android Studio 模拟器不支持在 Windows 11 上运行 Hyper-V,我们可以禁用 Hyper-V 来运行,但如果我们这样做需要 Hyper-V 才能像 WSL2 一样运行的应用程序,Docker 将无法运行。
在等待 Google 更新 Android Studio 模拟器支持 Hyper-V 时,我们有一个解决方案,可以通过使用另一个支持 Hyper-V 的模拟器(如 Bluestack 5 版本“Nougat 64 位(支持 Hyper-V)”)来运行两者,链接如下 https://www.bluestacks.com/download.html
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 好的,我已经更新了我的答案以获取更多信息。【参考方案5】:我终于使用this 修复(答案编号 48)来解决这个问题。在 Windows 修复此问题之前,这似乎是一个有效的解决方法。我下载了 Windows 的编译版本并将其移动到我的模拟器路径C:\Users\<username>\AppData\Local\Android\Sdk\emulator
。似乎也有适用于 linux 和 mac 的版本,但我还没有测试过。
【讨论】:
以上是关于安装 WSL2 后,Android Studio 模拟器无法在 Windows 11 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Android自动化打包记录--Jenkins+Docker+WSL2
Android自动化打包记录--Jenkins+Docker+WSL2
android studio 刚安装后创建了一个project 然后run模拟器 就出现这个问题求解答
Android studio下载后每次打开都要重新安装,在不用卸载的情况下怎么解决?
对于使用 WSL2 进行签名的 git 提交,Windows 10 上的 Visual Studio Code 中没有 GPG 密码提示