Android Emulator 疑难解答

本文介绍配置和运行 Android Emulator 时最常见的警告消息和问题。 此外,还介绍了这些错误的解决方案以及各种疑难解答提示,以帮助诊断仿真器问题。 有关详细信息,请参阅 在 developer.android.com 上排查 Android Emulator 的已知问题。

在 Windows 上部署时出现的问题

部署应用时,仿真器可能会显示一些错误消息。 此处介绍最常见的错误和解决方案。

部署错误

若出现有关无法在仿真器上安装 APK 或无法运行 Android Debug Bridge (adb) 的错误消息,请验证 Android SDK 能否连接到仿真器。 要验证仿真器的连接情况,请使用以下步骤:

  1. 从“Android 设备管理器”启动仿真器(选择虚拟设备,然后选择“启动”)。

  2. 打开命令提示符,转到 adb 的安装文件夹。 如果 Android SDK 安装在其默认位置,则 ADB 位于 C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe;如果没有,请在计算机上修改此路径以获取 Android SDK 的位置。

  3. 输入以下命令:

    adb devices
    
  4. 如果可以通过 Android SDK 访问仿真器,那么仿真器应该就显示在附加设备列表中。 例如:

    List of devices attached
    emulator-5554   device
    
  5. 如果仿真器不在此列表中,请启动“Android SDK 管理器”,应用所有更新,然后尝试再次启动仿真器。

MMIO 访问错误

若出现“发生 MMIO 访问错误”消息,请重启仿真器

缺少 Google Play Services

如果仿真 Android 设备未安装 Google Play 服务或 Google Play 商店,则可能是因为创建了排除这些包的虚拟设备。 创建虚拟设备时,请务必选择以下一个或两个选项:

  • Google API - 在虚拟设备中包含 Google Play 服务。
  • Google Play 商店 - 在虚拟设备中包含 Google Play 商店。

例如,此虚拟设备将包含 Google Play Services 和 Google Play 商店:

Android Device Manager with Google Play Services and Play Store enabled for .NET MAUI.

注意

Google Play 商店图片仅适用于某些基本设备类型,例如 Pixel、Pixel 2、Nexus 5 和 Nexus 5X。

性能问题

性能问题通常由以下某个问题引起:

  • 仿真器在没有硬件加速的情况下运行。
  • 在仿真器中使用基于 Arm 的映像运行的虚拟设备。

以下部分更详细地介绍了这些方案。

未启用硬件加速

启动虚拟设备但未启用硬件加速时,设备管理器会显示类似于下图的错误对话框:

Android device manager warning about Hyper-V not enabled on .NET MAUI.

要修复此错误,请按照硬件加速问题部分中的疑难解答步骤进行操作。

硬件加速问题

使用硬件加速时,可能会遇到配置问题或与计算机上的其他软件发生冲突。 疑难解答的第一步是验证是否已启用硬件加速。 可以使用 Android 的 SDK 来检查此设置。 打开命令提示符,并输入以下命令:

"C:\Program Files (x86)\Android\android-sdk\emulator\emulator-check.exe" accel

此命令假定 Android SDK 安装在默认位置 C:\Program Files (x86)\Android\android-sdk。 如果 Android SDK 安装在其他位置,请将上述命令修改为正确的位置。

提示

确保 Android 仿真器是最新的。 在 Visual Studio 中,按“工具”>“Android”>“Android SDK 管理器”。 选择“工具”选项卡,查看“Android 仿真器”条目是否有可用的更新。

BIOS 设置不正确

如果未将 BIOS 正确配置为支持硬件加速,则在运行 emulator-check.exe accel 命令时将显示类似于以下示例的消息:

VT feature disabled in BIOS/UEFI

要解决此问题,请重启计算机的 BIOS 并启用以下选项:

  • 虚拟化技术(标签可能因母板制造商而不同)。
  • 硬件强制执行数据执行保护。

如果因与 Hyper-V 相关的问题导致此问题仍然出现,请参阅以下部分。

HYPER-V 问题

在某些情况下,在“打开或关闭 Windows 功能”对话框中启用 Hyper-V 和 Windows 虚拟机监控程序平台后可能无法正确启用 Hyper-V。 要验证是否已启用 Hyper-V,请使用以下步骤:

  1. 在 Windows 搜索框中,输入“PowerShell”

  2. 右键单击搜索结果中的 Windows PowerShell,然后选择“以管理员身份运行”

  3. 在 PowerShell 控制台中,输入以下命令:

    Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
    

    如果未启用 Hyper-V,将显示类似于以下示例的消息,指示 Hyper-V 的状态为“已禁用”

    FeatureName      : Microsoft-Hyper-V-All
    DisplayName      : Hyper-V
    Description      : Provides services and management tools for creating and running virtual machines and their resources.
    RestartRequired  : Possible
    State            : Disabled
    CustomProperties :
    
  4. 在 PowerShell 控制台中,输入以下命令:

    Get-WindowsOptionalFeature -FeatureName HypervisorPlatform -Online
    

    如果未启用虚拟机监控程序,将显示类似于以下示例的消息,指示 HypervisorPlatform 的状态为“已禁用”

    FeatureName      : HypervisorPlatform
    DisplayName      : Windows Hypervisor Platform
    Description      : Enables virtualization software to run on the Windows hypervisor
    RestartRequired  : Possible
    State            : Disabled
    CustomProperties :
    

如果未启用 Hyper-V 或 HypervisorPlatform,请使用以下 PowerShell 命令进行启用:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -All

完成这些命令后,请进行重启。

有关启用 Hyper-V 的详细信息(包括使用部署映像服务和管理工具启用 Hyper-V 的技术),请参阅安装 Hyper-V

更多故障排除提示

以下建议通常有助于诊断 Android Emulator 问题。

从命令行启动仿真器

如果仿真器尚未运行,则可以从命令行(而不是从 Visual Studio 中)启动它以查看其输出。 通常,Android 仿真器 AVD 映像存储在以下位置:%userprofile%\.android\avd

可通过传入 AVD 的文件夹名称从此位置启动带有 AVD 图像的仿真器。 例如,此命令将启动名为“Pixel_API_27”的 AVD

"C:\Program Files (x86)\Android\android-sdk\emulator\emulator.exe" -partition-size 2000 -no-boot-anim -verbose -feature WindowsHypervisorPlatform -avd pixel_5_-_api_30 -prop monodroid.avdname=pixel_5_-_api_30

此命令假定 Android SDK 安装在默认位置 C:\Program Files (x86)\Android\android-sdk。 如果 Android SDK 安装在其他位置,请将上述命令修改为正确的位置。

查看设备管理器日志

通常可通过查看设备管理器日志来诊断仿真器问题。 这些日志将写入以下位置:%userprofile%\AppData\Local\Xamarin\Logs\16.0

可使用文本编辑器查看每个 DeviceManager.log 文件。