Устранение неполадок в Android Emulator

В этой статье описаны наиболее типичные ошибки и предупреждения, возникающие при настройке и запуске Android Emulator. Кроме того, описываются решения для этих ошибок, а также различные советы по устранению неполадок, которые помогут вам диагностировать проблемы с эмулятором.

Проблемы развертывания в Windows

Эмулятор может отображать некоторые сообщения об ошибках при развертывании приложения. Здесь описаны наиболее распространенные ошибки и решения.

Ошибки развертывания

Если отображается ошибка о сбое при установке APK на ваш компьютер или при запуске Android Debug Bridge (adb), убедитесь, что пакет SDK для Android может подключиться к эмулятору. Для проверки связи с эмулятором сделайте следующее:

  1. Запустите эмулятор из Android Device Manager (выберите ваше виртуальное устройство и зажмите Запустить).

  2. Откройте командную строку и перейдите в папку, в которой установлен adb. Если пакет SDK Android установлен в расположении по умолчанию, adb находится в папке C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe; если нет, измените этот путь для расположения пакета SDK Android на компьютере.

  3. Введите следующую команду:

    adb devices
    
  4. Если эмулятор доступен из Android SDK, то он отобразится в списке подключенных устройств. Пример:

    List of devices attached
    emulator-5554   device
    
  5. Если эмулятор не появился в этом списке, запустите Диспетчер пакетов SDK для Android, примените все обновления и запустите эмулятор еще раз.

Ошибка доступа к MMIO

Если появляется сообщение Произошла ошибка доступа к MMIO, перезапустите эмулятор.

Отсутствующие сервисы Google Play

Если виртуальное устройство, запущенное в эмуляторе, не поддерживает установленные сервисы Google Play или Google Play Маркет, это часто связано с тем, что виртуальное устройство было создано без этих пакетов. При создании виртуального устройства (см. раздел Управление виртуальными устройствами с помощью Android Device Manager) не забудьте выбрать один или оба из следующих вариантов:

  • API Google — включает Сервисы Google Play на виртуальном устройстве.
  • Google Play Маркет — включает Google Play Маркет на виртуальном устройстве.

Например, это виртуальное устройство будет включать сервисы Google Play и Google Play Маркет:

Example AVD with Google Play Services and Google Play Store enabled

Примечание

Образы Google Play Маркет доступны только для некоторых типов базовых устройств, например Pixel, Pixel 2, Nexus 5 и Nexus 5X.

Проблемы производительности

Проблемы производительности обычно вызваны одной из следующих проблем:

  • Эмулятор работает без аппаратного ускорения.

  • Виртуальное устройство, работающее в эмуляторе, не использует образ системы на базе x86.

В следующих разделах подробно описаны эти сценарии.

Аппаратное ускорение отключено

Если не включено аппаратное ускорение, при запуске виртуального устройства из Device Manager будет отображаться диалоговое окно с сообщением об ошибке, указывающее, что платформа гипервизора Windows (WHPX) настроена неправильно:

Example Device Manager warning

Если это сообщение об ошибке отображается, см. инструкции по проверке и включению аппаратного ускорения в разделе Проблемы с аппаратным ускорением.

Аппаратное ускорение включено, но эмулятор работает слишком медленно

Распространенной причиной этой проблемы является отсутствие образа на базе x86 в виртуальном устройстве (AVD). При создании виртуального устройства (см. раздел Управление виртуальными устройствами с помощью Android Device Manager) не забудьте выбрать образ системы на базе x86:

Selecting an x86 system image for a virtual device

Проблемы с аппаратным ускорением

При использовании Hyper-V или HAXM для аппаратного ускорения вы можете столкнуться с проблемами конфигурации или конфликтами с другим программным обеспечением на компьютере. Проверьте, включено ли аппаратное ускорение (и какой метод ускорения используется в эмуляторе), введя следующую команду в командной строке:

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

Эта команда предполагает, что пакет SDK Android установлен в расположении по умолчанию C:\Program Files (x86)\Android\android-sdk; если нет, измените указанный выше путь для расположения пакета SDK для Android на компьютере.

Аппаратное ускорение недоступно

Если Hyper-V доступен, ответом на команду emulator-check.exe accel будет следующее сообщение:

HAXM is not installed, but Windows Hypervisor Platform is available.

Если HAXM доступен, выводится подобное сообщение:

HAXM version 6.2.1 (4) is installed and usable.

Если аппаратное ускорение недоступно, будет отображаться следующее сообщение (эмулятор ищет HAXM, если не удается найти Hyper-V):

HAXM is not installed on this machine

Если аппаратное ускорение недоступно, инструкции по его включению на компьютере см. в разделе Ускорение с помощью Hyper-V.

Неправильные настройки BIOS

Если BIOS настроен неправильно и не поддерживает аппаратное ускорение, при выполнении команды emulator-check.exe accel будет отображаться подобное сообщение:

VT feature disabled in BIOS/UEFI

Чтобы устранить эту проблему, перезагрузите BIOS на компьютере и включите следующие параметры:

  • Технология виртуализации (может иметь другое название в зависимости от производителя системной платы).
  • Предотвращение исполнения данных на основе оборудования.

Если аппаратное ускорение включено и BIOS настроен правильно, эмулятор должен успешно работать с аппаратным ускорением. Однако с Hyper-V и HAXM все равно могут возникать проблемы, как описано далее.

Проблемы с Hyper-V

В некоторых случаях при включении одновременно Hyper-V и платформы гипервизора Windows в диалоговом окне Включение и отключение компонентов Windows Hyper-V включается некорректно. Чтобы убедиться, что Hyper-V включен, сделайте следующее:

  1. Введите powershell в поле поиска Windows.

  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 и (или) платформа гипервизора не включены, используйте следующие команды PowerShell для их включения:

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

После завершения этих команд выполните перезагрузку.

Дополнительные сведения о включении Hyper-V (в том числе методы включения Hyper-V с помощью средства обслуживания и администрирования образов развертывания) см. в разделе Установка Hyper-V.

Проблемы с HAXM

Проблемы с HAXM часто вызваны конфликтом с другими технологиями виртуализации, неправильной конфигурацией или устаревшим драйвером HAXM.

Процесс HAXM не запущен

Если решение HAXM установлено, введите следующую команду в командной строке, чтобы проверить, что процесс HAXM запущен:

sc query intelhaxm

Если процесс HAXM запущен, вы увидите примерно следующий результат:

SERVICE_NAME: intelhaxm
    TYPE               : 1  KERNEL_DRIVER
    STATE              : 4  RUNNING
                            (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

Если параметр STATE не равен RUNNING, то для решения этой проблемы см. раздел Использование Intel Hardware Accelerated Execution Manager.

Конфликты HAXM с другими технологиями виртуализации

HAXM может конфликтовать с другими технологиями, использующими виртуализацию, такими как Hyper-V, Windows Device Guard и некоторые антивирусы:

  • Hyper-V — если вы используете версию Windows до обновления Windows 10 апреля 2018 г. (сборка 1803) и Hyper-V включена, выполните действия, описанные в разделе "Отключение Hyper-V", чтобы включить HAXM.

  • Device Guard — Device Guard и Credential Guard могут препятствовать отключению Hyper-V на Windows компьютерах. Порядок отключения Device Guard и Credential Guard см. в разделе Отключение Device Guard.

  • Антивирусная программа — если вы используете антивирусное программное обеспечение, использующее аппаратную виртуализацию (например, Avast), отключите или удалите это программное обеспечение, перезагрузите и повторите попытку эмулятора Android.

Неправильные настройки BIOS

Если вы используете HAXM на компьютере с Windows, HAXM не заработает, пока технология виртуализации (Intel VT-x) не будет включена в BIOS. Если VT-x отключен, то при попытке запуска Android Emulator вы получите следующую ошибку:

Компьютер удовлетворяет требованиям для запуска HAXM, но технология виртуализации Intel (VT-x) отключена.

Для исправления этой ошибки перезагрузите компьютер в BIOS, включите VT-x и SLAT (трансляция адресов второго уровня) и перезагрузите компьютер обратно в Windows.

Отключение Hyper-V

Если вы используете версию Windows младше версии Windows 10 с обновлением за апрель 2018 г. (сборка 1803) , а Hyper-V включен, нужно отключить Hyper-V и перезапустить компьютер для установки и использования HAXM. Если вы используете версию Windows 10 с обновлением за апрель 2018 г. (сборка 1803) или более позднюю, Android Emulator версии 27.2.7 или более поздней может использовать Hyper-V (вместо HAXM) для аппаратного ускорения, поэтому отключать Hyper-V не требуется.

Технологию Hyper-V можно отключить из панели управления, выполнив следующие действия:

  1. Введите компоненты windows в поле поиска Windows и выберите Включение и отключение компонентов Windows в результатах поиска.

  2. Снимите флажок Hyper-V:

    Disabling Hyper-V in the Windows Features dialog

  3. Перезагрузите компьютер.

Также для отключения гипервизора Hyper-V можно использовать следующую команду Powershell:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Intel HAXM и Microsoft Hyper-V не могут быть активны одновременно. К сожалению, переключение между технологиями Hyper-V и HAXM без перезагрузки компьютера невозможно.

В некоторых случаях выполнение описываемых выше действий не позволяет отключить технологию Hyper-V, если включены функции Device Guard и Credential Guard. Если вам не удается отключить Hyper-V (или по всем признакам эта технология отключена, но установка HAXM все равно завершается сбоем), отключите функции Device Guard и Credential Guard, выполнив действия, описываемые в следующем разделе.

Отключение функции Device Guard

Функции Device Guard и Credential Guard могут препятствовать отключению технологии Hyper-V на компьютерах под управлением ОС Windows. Это часто происходит на компьютерах, присоединенных к доменам, которые настраиваются и контролируются управляющей ими организацией. Чтобы проверить, выполняется ли функция Device Guard в ОС Windows 10, выполните следующие действия:

  1. Введите Сведения о системе в поле поиска Windows и выберите Сведения о системе в результатах поиска.

  2. В разделе Сведения о системе проверьте наличие службы Безопасность на основе виртуализации Device Guard и убедитесь, что она имеет состояние Выполняется:

    Device Guard is present and running

Если функция Device Guard включена, выполните следующие действия для ее отключения:

  1. Убедитесь, что технология Hyper-V отключена в окне Включение или отключение компонентов Windows, как описывается в предыдущих разделах.

  2. В поле поиска Windows введите gpedit.msc и выберите элемент Изменение групповой политики. Будет запущен редактор локальных групповых политик.

  3. В локальном редакторе групповая политика перейдите к системе > Device Guard для административных шаблонов > конфигурации > компьютера:

    Device Guard in Local Group Policy Editor

  4. Измените значение параметра Включить средство обеспечения безопасности на основе виртуализации на Отключено (как показано выше) и закройте редактор локальных групповых политик.

  5. В поле поиска Windows введите cmd. Когда в результатах поиска появится элемент Командная строка, щелкните пункт Командная строка правой кнопкой мыши и выберите Запустить от имени администратора.

  6. Скопируйте и вставьте следующие команды в окно командной строки (если диск Z: используется, выберите вместо него букву свободного диска):

    mountvol Z: /s
    copy %WINDIR%\System32\SecConfig.efi Z:\EFI\Microsoft\Boot\SecConfig.efi /Y
    bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
    bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=Z:
    mountvol Z: /d
    
  7. Перезапустите компьютер. На экране загрузки должен появиться запрос следующего вида:

    Вы действительно хотите отключить Credential Guard?

    Нажмите указанную в запросе клавишу, чтобы отключить Credential Guard.

  8. После перезагрузки компьютера еще раз убедитесь, что технология Hyper-V отключена (см. ранее описываемые действия).

Если технология Hyper-V по-прежнему не отключена, значит, отключение функций Device Guard или Credential Guard запрещено политиками на вашем присоединенном к домену компьютере. В таком случае вы можете запросить у администратора домена исключение, которое позволит отключить Credential Guard. Кроме того, вы можете использовать для работы с HAXM компьютер, который не присоединен к домену.

Дополнительные советы по устранению неполадок

Следующие рекомендации часто помогают диагностировать проблемы с эмулятором Android.

Запуск эмулятора из командной строки

Если эмулятор еще не запущен, вы можете запустить его из командной строки (а не из среды Visual Studio) для просмотра его выходных данных. Как правило, образы AVD эмулятора Android хранятся в следующем расположении (замените имя_пользователя своим именем пользователя Windows):

C:\Users\username\.android\avd

Запустите эмулятор с образом AVD из этого расположения, передав имя папки AVD. Например, эта команда запускает виртуальное устройство Android с именем Pixel_API_27:

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

В этом примере предполагается, что пакет SDK Android установлен в расположении по умолчанию C:\Program Files (x86)\Android\android-sdk; если нет, измените указанный выше путь для расположения пакета SDK Android на компьютере.

При выполнении этой команды вы получите много строк выходных данных во время запуска эмулятора. В частности, вы увидите строки, как в следующем примере, если аппаратное ускорение включено и работает должным образом (в этом примере для аппаратного ускорения используется HAXM):

emulator: CPU Acceleration: working
emulator: CPU Acceleration status: HAXM version 6.2.1 (4) is installed and usable.

Просмотр журналов Device Manager

Часто можно диагностировать проблемы с эмулятором, просмотрев журналы Device Manager. Эти журналы записываются в следующее расположение:

C:\Users\username\AppData\Local\Xamarin\Logs\16.0

Просмотрите файл DeviceManager.log в текстовом редакторе, например в Блокноте. Следующий пример записи журнала указывает, что HAXM не найден на компьютере:

Component Intel x86 Emulator Accelerator (HAXM installer) r6.2.1 [Extra: (Intel Corporation)] not present on the system

Проблемы развертывания в macOS

Эмулятор может отображать некоторые сообщения об ошибках при развертывании приложения. Ниже описаны наиболее распространенные ошибки и решения.

Ошибки развертывания

Если отображается ошибка о сбое при установке APK на ваш компьютер или при запуске Android Debug Bridge (adb), убедитесь, что пакет SDK для Android может подключиться к эмулятору. Для проверки связи сделайте следующее:

  1. Запустите эмулятор из Android Device Manager (выберите ваше виртуальное устройство и зажмите Запустить).

  2. Откройте командную строку и перейдите в папку, в которой установлен adb. Если пакет SDK для Android установлен в расположении по умолчанию, adb находится в каталоге ~/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb; в противном случае измените этот путь для расположения пакета SDK для Android на вашем компьютере.

  3. Введите следующую команду:

    adb devices
    
  4. Если эмулятор доступен из Android SDK, то он отобразится в списке подключенных устройств. Пример:

    List of devices attached
    emulator-5554   device
    
  5. Если эмулятор не появился в этом списке, запустите Диспетчер пакетов SDK для Android, примените все обновления и запустите эмулятор еще раз.

Ошибка доступа к MMIO

Если появляется сообщение Произошла ошибка доступа к MMIO, перезапустите эмулятор.

Отсутствующие сервисы Google Play

Если виртуальное устройство, запущенное в эмуляторе, не поддерживает установленные сервисы Google Play или Google Play Маркет, это обычно связано с тем, что виртуальное устройство было создано без этих пакетов. При создании виртуального устройства (см. раздел Управление виртуальными устройствами с помощью Android Device Manager) не забудьте выбрать один или оба из следующих вариантов:

  • API Google — включает Сервисы Google Play на виртуальном устройстве.
  • Google Play Маркет — включает Google Play Маркет на виртуальном устройстве.

Например, это виртуальное устройство будет включать сервисы Google Play и Google Play Маркет:

Example AVD with Google Play Services and Google Play Store enabled

Примечание

Образы Google Play Маркет доступны только для некоторых типов базовых устройств, например Pixel, Pixel 2, Nexus 5 и Nexus 5X.

Проблемы производительности

Проблемы производительности обычно вызваны одной из следующих проблем:

  • Эмулятор работает без аппаратного ускорения.

  • Виртуальное устройство, работающее в эмуляторе, не использует образ системы на базе x86.

В следующих разделах подробно описаны эти сценарии.

Аппаратное ускорение отключено

Если аппаратное ускорение не включено, может появиться диалоговое окно с сообщением о том, что устройство будет запущено без ускорения, при развертывании приложения в эмуляторе Android. Если вы не знаете, включено ли аппаратное ускорение на компьютере (или хотите знать, какая технология обеспечивает ускорение), см. инструкции по проверке и включению аппаратного ускорения в разделе Проблемы с аппаратным ускорением.

Аппаратное ускорение включено, но эмулятор работает слишком медленно

Распространенной причиной этой проблемы является отсутствие образа на базе x86 в виртуальном устройстве. При создании виртуального устройства (см. раздел Управление виртуальными устройствами с помощью Android Device Manager) не забудьте выбрать образ системы на базе x86:

Selecting an x86 system image for a virtual device

Проблемы с аппаратным ускорением

При использовании платформы гипервизора или HAXM для аппаратного ускорения эмулятора вы можете столкнуться с проблемами, вызванными неправильной установкой или устаревшей версией macOS. Следующие разделы помогут вам устранить эту проблему.

Проблемы с платформой гипервизора

Если вы используете macOS 10.10 или более поздней версии на более новом компьютере Mac, эмулятор Android будет автоматически использовать платформу гипервизора для аппаратного ускорения. Но на более старых компьютерах Mac или компьютерах Mac под управлением версии macOS ранее 10.10 платформа гипервизора может не поддерживаться.

Чтобы определить, поддерживает ли компьютер Mac платформу гипервизора,откройте окно терминала и введите следующую команду:

sysctl kern.hv_support

Если компьютер Mac поддерживает платформу гипервизора, эта команда вернет следующий результат:

kern.hv_support: 1

Если платформа гипервизора недоступна на компьютере Mac, следуйте инструкциям в разделе Ускорение с помощью HAXM, чтобы вместо этого использовать HAXM для ускорения.

Проблемы с HAXM

Если Android Emulator не запускается, обычно это вызвано проблемами с HAXM. Проблемы с HAXM часто вызваны конфликтом с другими технологиями виртуализации, неправильной конфигурацией или устаревшим драйвером HAXM. Переустановите драйвер HAXM при помощи процедуры, описанной в разделе Установка HAXM.

Дополнительные советы по устранению неполадок

Следующие рекомендации часто помогают диагностировать проблемы с эмулятором Android.

Запуск эмулятора из командной строки

Если эмулятор еще не запущен, вы можете запустить его из командной строки (а не из среды Visual Studio для Mac) для просмотра его выходных данных. Как правило, образы AVD эмулятора Android хранятся в следующем расположении:

~/.android/avd

Запустите эмулятор с образом AVD из этого расположения, передав имя папки AVD. Например, эта команда запускает виртуальное устройство Android с именем Pixel_2_API_28:

~/Library/Developer/Xamarin/android-sdk-macosx/emulator/emulator -partition-size 512 -no-boot-anim -verbose -feature WindowsHypervisorPlatform -avd Pixel_2_API_28 -prop monodroid.avdname=Pixel_2_API_28

Если пакет SDK для Android установлен в расположении по умолчанию, эмулятор находится в каталоге ~/Library/Developer/Xamarin/android-sdk-macosx/emulator; в противном случае измените этот путь для расположения пакета SDK для Android на вашем компьютере Mac.

При выполнении этой команды вы получите много строк выходных данных во время запуска эмулятора. В частности, вы увидите строки, как в следующем примере, если аппаратное ускорение включено и работает должным образом (в этом примере для аппаратного ускорения используется платформа гипервизора):

emulator: CPU Acceleration: working
emulator: CPU Acceleration status: Hypervisor.Framework OS X Version 10.13

Проблемы с дополнительными сведениями об именовании намерений

При настройке дополнительных сведений о намерениях в конфигурации запуска Android поддерживаются только A-Z, a-z, "_", "-" и цифры. Кроме того, все значения ключей должны быть уникальными.

Просмотр журналов Device Manager

Часто можно диагностировать проблемы с эмулятором, просмотрев журналы Device Manager. Эти журналы записываются в следующее расположение:

~/Library/Logs/XamarinDeviceManager

Просмотрите файл Android Devices.log, дважды щелкнув его, чтобы открыть его в приложении консоли. Следующий пример записи журнала указывает, что HAXM не найден:

Component Intel x86 Emulator Accelerator (HAXM installer) r6.2.1 [Extra: (Intel Corporation)] not present on the system