在我的全新 Win11 Pro 计算机 (AMD Ryzen 9 7950X) 上,当我禁用
Hyper-V
并启用 AEHD
(或 GVM)时,我的 Visual Studio 2022 Enterprise 安装 (v17.7.6) 不使用硬件加速。
当我通过 Visual Studio 启动模拟设备时
Android Device Manager
会显示此错误消息,并且性能非常慢:Hyper-V 未配置。打开“Hyper-V”功能以切换到本机虚拟机管理程序并加速您的模拟器。
当我使用
"C:\Program Files (x86)\Android\android-sdk\emulator\emulator.exe" -avd pixel_5_-_api_33
通过批处理/cmd 启动它时,一切正常。
sc query aehd
说:跑步emulator-check.exe hyper-v
说:Hyper-V 未安装(C:\Program Files (x86)\Android ndroid-sdk mulator mulator-check.exe)emulator-check.exe accel
表示:GVM(版本 2.1)已安装并可用。但最重要的是(如上面的简短版本中所述):AEHD(硬件加速)在通过 cmd 启动时起作用。
Android Device Manager
(与 Android-Studio/Google 设备管理器无关,因为 AndroidDevices.exe 似乎是 Xamarin Inc. 提供的)是否强制我安装 Hyper-V?
我花了很长时间,卸载/安装了数十次 AEHD/Hyper-V,并幸运地发现它是 VS 问题,而不是驱动程序/安装问题。
我只在这里找到了一篇关于同一问题的帖子。
我无法想象这是一个“全球”错误,而且我是唯一一个对此抱怨的人......
非常感谢任何帮助、想法和提示。预先感谢。
PS:我不想也无法安装/使用 Hyper-V,因为活动的 Hyper-V 与我正在运行的其他软件不兼容。
在这里我找到了设备管理器日志文件的位置。
我的日志文件在
c:\Users\<user>\AppData\Local\Xamarin\Logs\17.0\*.devicemanager.log
中看起来像这样:
...
[23-11-05 12:40:43.00] Component Android Emulator hypervisor driver (installer) r2.0.0 [Extra: (Google LLC.)] not present on the system
[23-11-05 12:40:43.00] Component Intel x86 Emulator Accelerator (HAXM installer) r7.6.5 [Extra: (Intel Corporation)] not present on the system
[23-11-05 12:40:43.00] Component Intel x86 Emulator Accelerator (HAXM installer) r7.6.5 [Extra: (Intel Corporation)] not present on the system
...
[23-11-05 12:41:10.00] AVDStatusToButtonTextConverter [Convert]Start
[23-11-05 12:41:10.00] [HypervisorManager] Checking for accelerated emulator: True
[23-11-05 12:41:10.00] [ProcessStartInfoAsInvoker] Executing command: "cmd" "/C" "sc" "query" "intelhaxm"
[23-11-05 12:41:10.02] [ProcessResult] cmd result: StandardOutput: [SC] EnumQueryServicesStatus:OpenService FAILED 1060: The specified service does not exist as an installed service. ExitCode: 1060
[23-11-05 12:41:10.18] [HypervisorManager] IsWHPOn: False
[23-11-05 12:41:10.18] [HypervisorManager] IsHyperVOn: False
[23-11-05 12:41:10.18] [HypervisorManager] SupportsHyperVOnlyAcceleration: True
...
它声称未安装虚拟机管理程序驱动程序(在记录的版本中并未安装)。所以我从 SDK-Manager 安装了官方 v2.0 并再次尝试:
...
[23-11-05 12:50:44.84] Detecting component Android Emulator hypervisor driver (installer) r2.0.0 [Extra: (Google LLC.)] in directory 'C:\Program Files (x86)\Android\android-sdk\extras/google/Android_Emulator_Hypervisor_Driver'
[23-11-05 12:50:44.84] Found revision 2.0.0 on the system
[23-11-05 12:40:43.00] Component Intel x86 Emulator Accelerator (HAXM installer) r7.6.5 [Extra: (Intel Corporation)] not present on the system
[23-11-05 12:40:43.00] Component Intel x86 Emulator Accelerator (HAXM installer) r7.6.5 [Extra: (Intel Corporation)] not present on the system
...
[23-11-05 12:41:10.00] AVDStatusToButtonTextConverter [Convert]Start
[23-11-05 12:41:10.00] [HypervisorManager] Checking for accelerated emulator: True
[23-11-05 12:41:10.00] [ProcessStartInfoAsInvoker] Executing command: "cmd" "/C" "sc" "query" "intelhaxm"
[23-11-05 12:41:10.02] [ProcessResult] cmd result: StandardOutput: [SC] EnumQueryServicesStatus:OpenService FAILED 1060: The specified service does not exist as an installed service. ExitCode: 1060
[23-11-05 12:41:10.18] [HypervisorManager] IsWHPOn: False
[23-11-05 12:41:10.18] [HypervisorManager] IsHyperVOn: False
[23-11-05 12:41:10.18] [HypervisorManager] SupportsHyperVOnlyAcceleration: True
...
找不到驱动程序,但仍然是同样的问题。我认为这是 AndroidDevices.exe 中的一个错误,因为它总是以
Executing command: "cmd" "/C" "sc" "query" "intelhaxm"
启动虚拟设备,这显然会强制 HAXM :(
我能够解决这个问题。这是一个 Visual Studio 错误(
AndroidDevices.exe
中的错误)。
上面的
Executing command: "cmd" "/C" "sc" "query" "intelhaxm"
未启动虚拟设备。它是AndroidDevices.exe
检查硬件加速服务是否正在运行。
这对于 intelhaxm 服务来说很好。但android的新服务被命名为gvm甚至aehd。
由于上述检查失败,日志显示模拟器的启动如下:
"C:\Program Files (x86)\Android\android-sdk\emulator\emulator.exe" "-netfast" "-no-accel" "-verbose" "-avd" "pixel_5_-_api_33" "-prop" "monodroid.avdname=pixel_5_-_api_33" "-prop" "emu.uuid=5dbe4647-fd53-466f-ace6-87eb26e48949"
no-accel
参数是这里的罪魁祸首。
我的解决方案是从 github 安装 AEHD 服务/驱动程序,而不是像开箱即用那样命名为
aehd
。我将其重命名为intelhaxm
。
要执行此操作,请下载并提取最新版本(我已使用 v2.1 完成)。
现在运行
silent_install.bat
时,它会安装名为 intelhaxm
而不是 aehd
的服务(仅供参考:该服务不会显示在 Windows 上的服务列表中!)。
最后,当
AndroidDevices.exe
运行 sc query intelhaxm
命令时,它确实会得到肯定的结果,并在没有 no-accel
参数的情况下启动模拟器。
我希望微软能够尽快解决这个问题,并且在决定使用
gvm
之前也会寻找aehd
和no-accel
服务。