Компания
281,79
рейтинг
19 июня 2012 в 17:47

Разработка → Как разогнать эмулятор Android

Intel HAXM
Каждый, кто хоть раз работал с эмулятором для разработки приложений под Android, знает, что даже на современном железе эмулятор тормозит так, что для его использования нужно нечеловеческое терпение. То есть, наверное, надо самому стать андроидом-киборгом.

Но есть и еще один метод – попроще.

Intel Hardware Accelerated Execution Manager (Intel HAXM) — это решение, использующее аппаратные возможности виртуализации (Intel VT) и позволяющее значительно ускорить работу эмулятора Android.

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

В случае разработки приложения, использующего только Dalvik разработчику не придется ничего менять, т.к. приложение не заметит разницы. В случае с NDK приложением необходимо будет добавить поддержку x86 архитектуры к списку собираемых библиотек. Сделать это несложно, нужно просто добавить поддержку x86 в make файл.

Системные требования


  • Процессор с поддержкой VT-x, EM64T, Execute Disable Bit. Чтобы узнать поддерживает ли ваш процессор перечисленные возможности, можно воспользоваться сайтом ark.intel.com
  • Как минимум 1 Гб, а лучше 2Гб оперативной памяти.

Поддерживаемые ОС


  • Windows 7 (32/64), Windows Vista* (32/64), Windows XP (32)
  • Mac OS X 10.6 и выше (32/64)
  • Ubuntu (64)

Установка


Intel HAXM можно установить как вручную, так и используя Android SDK Manager.

Установка вручную


Зайдите на сайт software.intel.com/ru-ru/android и скачайте установочный пакет для вашей платформы. Далее запустите установку и следуйте подсказкам мастера установки.

Установка с помощью Android SDK Manager




  1. Запустите Android SDK Manager
  2. В разделе Extras выберите «Intel Hardware Accelerated Execution Manager»
  3. Отметьте его галочкой и нажмите «Install package…»
  4. Далее подтвердите соглашение с лицензией и нажмите кнопку «Install»
  5. SDK Manager скачает и распакует пакет в каталог extras, находящийся в каталоге, в который был установлен Android SDK
  6. Перейдите в этот каталог и запустите установку Intel HAXM



Установка Intel HAXM


В процессе установки вам предложат определить объем выделяемой оперативной памяти. Вы можете оставить значение, предложенное по умолчанию. Если в процессе работы вы захотите изменить это значение – запустите установку еще раз.



В процессе установки может возникнуть и такое



В этом случае проверьте настройки в BIOS, возможно виртуализация поддерживается вашей системой, но по-умолчанию отключена.

Для того, чтобы проверить, что все установлено верно и работает, необходимо в командной строке выполнить:

sc query intelhaxm

После выполнения данной команды вы увидите текущий статус службы



Так же может пригодится способ остановить службу:

sc stop intelhaxm

Запустить службу:

sc start intelhaxm

Установка эмулятора Android x86


Описанное выше было не что иное, как подготовка почвы. Теперь необходимо установить сам эмулятор, который мы хотим «разогнать» с помощью Intel HAXM. В настоящий момент их два:

  • Android 4.0.3 (API 15)
  • Android 2.3.3 (API 10)

Устанавливаются они с помощью Android SDK Manager. Запускаем, отмечаем галочками интересующие нас образы и устанавливаем.



Создание виртуального устройства


После установки образа эмулятора Android для x86 необходимо создать новое виртуальное устройство с помощью Android Virtual Device Manager. Для этого:

  • Запускаем ADV Manager
  • Выбираем создание новойго устройства «New...»



  1. В окне свойств задаем произвольное название, например «Intel_Android»
  2. Выбираем версию, в моем случае версия «Android 4.0.3 – API Level 15»
  3. Устанавливаем остальные параметры (размер и наличие SD карты, разрешение и т.д.)
  4. Далее следует добавить обязательный параметр в раздел «Hardware» — «GPU Emulation» (кнопка «New», в списке «Property» необходимо выбрать «GPU Emulation», затем «ОК») и установить его в «yes»



Готово! Теперь осталось запустить и проверить все ли настроено верно. Выбираем созданный эмулятор и запускаем его кнопкой «Start». Далее идем в настройки и смотрим название устройства. Если все было сделано правильно, то для нашего примера, в поле «Model number» мы увидим строку «Android SDK Build for x86».



Конец мучениям и долгим ожиданиям! Наш эмулятор начал работать быстрее, причем настолько, что можно прямо из него просматривать видео с Youtube в режиме реального времени, а не как раньше в режиме слайд-шоу.
Автор: @Terror
Intel
рейтинг 281,79

Комментарии (50)

  • 0
    Я же правильно понял, что эмулятор обычно тормозит, потому что ему нужно эмулировать ARM? Извиняюсь за тупой вопрос, просто не пишу под Android.
    • +2
      Да, поэтому. С HAXM скорость увеличивается как раз за счет того, что инструкции, без трансляции, исполняются на системном CPU.
  • 0
    Приложения, использующие native-библиотеки под ARM, заведутся?
    • 0
      Пересобрать сначала под x86.
    • 0
      По идее не должны. Но если это Ваши приложения — то собирайте нативные либы под все архитектуры — arm, mips и x86.
      • +2
        Проблема как раз в том, что не мои. Понятно, будем продолжать использовать реальные железки через дата-кабель.
        • 0
          Зачем жеж дата-кабель. Можно через wifi, adb прекрасно работает по воздуху. Использую для этого adbWireless из маркета.
          • 0
            Да как-то привычнее по хвосту + не уверен, что unity remote будет работать иначе.
          • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      С HAXM нет, заведуться только х86, для native arm понадобиться не х86 sdk и соответсвенно тормозно эмулятор.
  • +1
    Ok, Gentoo amd64 — пишет: Intel Hardware Accelerated Execution Manager — Not compatible with Linux. Точно linux поддерживается?
    • +4
      Ага, кажется понял. Линуксоидам в свойственном им духе — дается документашка как поднять kvm и запустить эмулятор с --enable-kvm опцией. Хорошо, будем пробовать.
      • 0
        А что там под капотом? Банальный QEMU что ли?
        • 0
          А нужен нескучный VBox?
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А Google Maps Api там будет работать?
    • 0
      работоспособность maps api от этого никак не зависит, зависит от версии sdk, на которой поднимаете эмулятор, чтобы работали карты нужна версия с google api
      • 0
        простите, понял к чему был вопрос.
    • 0
      Я сам их туда закинул и собрал такой образ и даже уже в какой-то похожей теме давал линк именно Вам на этот образ с google maps :)
  • 0
    Сапсибо, у меня на макоси эмулятор теперь тоже летает :)
    Теперь осталось собрать ffmpeg под x86…
  • +5
    А амдшная виртуализация поддерживается? :)
  • 0
    Попробовал на работе — не запускается, черный экран и все. Проц pentium e5400
    • 0
      Аналогично…
  • НЛО прилетело и опубликовало эту надпись здесь
    • –1
      А если службу остановить, образ запускается?
      • 0
        А у меня x86-образ и с HAXM, и без HAXM не запускается. В лучшем случае на экране бесконечно идёт анимация надписи ANDROID и всё; в худшем — такой же чёрный экран, как и у mezhevikin.
        2410M, W7 x64
        • НЛО прилетело и опубликовало эту надпись здесь
        • –1
          Могу только посоветовать спросить на этом форуме — software.intel.com/en-us/forums/android/
      • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      И у меня не работает. Черный экран.
      Win 7, x64, i5-2430M
  • –1
    На AMD работает?
    • –1
      Intel Hardware Accelerated Execution Manager
  • НЛО прилетело и опубликовало эту надпись здесь
  • НЛО прилетело и опубликовало эту надпись здесь
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Только на железках TI 44x0 и Qualcomm Krait. NVIDIA и Intel пока на 2.6.x.
  • +1
    Нууу, секрет Полишинеля.
    Я еще год назад тестировал на образах от android-x86.org (тогда были стабильные 2.2 и пионерские 2.3, а сейчас они уже дошли до ICS).
    Есть, к слову, решение еще хулигантней — загрузиться с android-x86 на физически отдельной машине (у меня под рукой были Toshiba Satellite и Acer Aspire 1, но судя по первому, пошло бы вообще на чем угодно). Подхватились камера, акселерация графики, сеть (включая wi-fi)…
    Правда, при использовании отдельной железки пропадает основная плюшка эмулятора. Зато остается дополнительная, которая едва ли не важней: root из коробки.
    (Тестирования на реальном телефоне никто никогда не отменял, но при таком раскладе оно свободно уезжает куда-нибудь к betta milestone, после того, как доточены архитектура и бизнес-логика.)
  • 0
    А если говорит что NX not present?
    • 0
      Если у кого тоже будет писать проверьте в BIOS для CPU Execute Disable Bit должен быть Enabled
  • +1
    2.3 вообще реально запустить с поддержкой intelhaxm? У гугла написано:
    «Start the AVD Manager and create a new AVD with the Target value of Android 4.0.3 (API Level 15), revision 3 or higher.»
    А в SDK менеджере для андроида 2.3.3 есть пакет Intel Atom x86 System Image
    • 0
      Да, я запустил, делаете все, что написано в статье, кроме пераметра GPU emulation, с ним не запускается. И еще в таргете AVD выбрать Intel Atom x86 System Image.
      • 0
        Спасибо, работает.
  • +4
    Автор!

    Жги ещё!

    Существование Хабра для меня теперь оправдано одной этой статьёй.
  • 0
    В osx при установке HAXM virtualbox отказывается далее работать, инструкция vt-x постоянно занята получается, пришлось удалить на время этот ускоритель и отлаживать далее через разные телефончики. Может кто-то сталкивался или выходил релиз поновее с управлением использования инструкций под себя? Disabe сделать HAXM этому не нашел как.
    • 0
      sc stop intelhaxm… нет?
  • 0
    Вроде быстрее, но не прям вот youtube смотреть. тормозин он
  • 0
    Спасибо, скорость реально возросла в несколько раз!
  • 0
    Интересно было бы понять, в чем принципиальная разница с простой эмуляцией x86 (который доступен для эмуляторов API L10). Я думал что в таком эмуляторе инструкции уже не эмулируются. Что же нам дают эти интел-ускорители?
  • 0
    Наблюдаю падения ОС при использовании AVD c GPU emulation:
    Linux Mint 12, 2.6.38-8, x86_64
    Ноутбук Acer Aspire 3820GT. У кого-нибудь есть похожие проблемы?
  • 0
    Кстати, столкнулся с проблемой.
    В емуляторе не работает звук, но в в настройках AVD Manager нет закладок с редактированием hardware опций.
    Лечится следующим образом
    1. Заходим в C:\Users\\.android\avd\<avdName.avd>
    2. Открываем config.ini, добавляем в конец hw.audioOutput=yes
    3. Перезапускаем avd

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка