Visual Studio 2022 (MAUI/Xamarin) Android 设备管理器不支持 AEHD

问题描述 投票:0回答:1

在我的全新 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 启动它时,一切正常。

长版

  • 我已按照 androidMAUI 的说明进行操作。
  • 我确定 Hyper-V 确实已关闭
  • 我已经从 github
  • 安装了最新的 AEHD v2.1(以前的 GVM)
  • 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 与我正在运行的其他软件不兼容。

更新1

在这里我找到了设备管理器日志文件的位置。

我的日志文件在

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 :(

android-emulator visual-studio-2022 hardware-acceleration hypervisor
1个回答
0
投票

我能够解决这个问题。这是一个 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 完成)。

  • 将所有 aehd.* 文件重命名为 intelhaxm.*
  • 打开 intelhaxm.inf 并找到“aehd”并将其替换为“intelhaxm”并保存文件
  • 打开批处理文件(我只使用了silent_install.bat)并查找并用“intelhaxm”替换“aehd”...然后保存文件。

现在运行

silent_install.bat
时,它会安装名为
intelhaxm
而不是
aehd
的服务(仅供参考:该服务不会显示在 Windows 上的服务列表中!)。

最后,当

AndroidDevices.exe
运行
sc query intelhaxm
命令时,它确实会得到肯定的结果,并在没有
no-accel
参数的情况下启动模拟器。

我希望微软能够尽快解决这个问题,并且在决定使用

gvm
之前也会寻找
aehd
no-accel
服务。

© www.soinside.com 2019 - 2024. All rights reserved.