Предварительные сведения
Intel Hardware Accelerated Execution Manager (HAXM) – это Android-эмулятор, который поддерживает аппаратную виртуализацию. Он создаёт невысокую нагрузку на систему, обладает отличной производительностью и быстрым интерфейсом.
Используя Intel HAXM, можно запустить несколько экземпляров Android-эмулятора на одном компьютере, не особо беспокоясь о производительности, о нагрузке на систему или о «тормозах» интерфейса. Подобный подход может быть весьма полезным в итеративном процессе создания и тестирования приложений, он способен дать огромный прирост производительности труда разработчиков.
Образы Android-эмуляторов, рассчитанные на архитектуры, отличные от x86, могут медленно запускаться и с задержкой откликаться на команды пользователя. Кроме того, в отличие от некоторых Android-эмуляторов сторонних производителей, с помощью Intel HAXM вы получаете возможность работать с последними версиями API и платформ Android сразу же после их выпуска.
Здесь вы можете найти подробное руководство по работе с HAXM.
В этом материале мы поговорим о том, как пользоваться возможностями Intel HAXM при создании приложений, рассчитанных на всевозможные варианты платформы Android. Такие приложения могут работать на обычных смартфонах разных форм-факторов, и на устройствах, несущих на борту Android Wear и Android TV.
Работа с универсальным приложением-примером для Android
Компания Google недавно выпустила приложение, на примере которого показано, как охватить одной кодовой базой множество различных Android-устройств.
В примере продемонстрированы передовые подходы к разработке универсальных приложений. Для сборки проекта воспользуйтесь инструкциями, которые можно найти по вышеупомянутой ссылке. Мы, в данном практическом руководстве, будем испытывать пример на x86 HAXM-эмуляторах Android TV, Wear и смартфона.
Проект можно импортировать в Android Studio и воспользоваться возможностями этой среды по сборке и запуску приложения на эмуляторе. Если вы предпочитаете работать с другой IDE, то, о чём пойдёт речь дальше, так же окажется полезным.
Если вам близок интерфейс командной строки, можете просто запустить Gradle-скрипт для сборки приложения из папки с исходным кодом примера.
gradlew assembleDebug
Результирующий APK-файл можно найти в папке «mobile/build/outputs/apk/mobile-debug.apk».
Создание AVD для Android TV и Wear
Для начала нужно удостовериться в том, что у нас имеются самые свежие образы эмуляторов для платформ Android TV, Wear, а так же – для обычных смартфонов.
Откроем Android SDK Manager. Его можно запустить из интерфейса Android Studio или из командной строки (папка <Android-SDK>/tools должна быть указана в переменных среды) с помощью такой команды:
> android
Окно Android SDK Manager. Образы систем, которые нужно загрузить, выделены
После того, как необходимые пакеты загружены, нужно, для использования соответствующих образов систем, настроить конфигурации эмуляторов (то есть, создать набор AVD). Для этого нам понадобится Android Virtual Device Manager. Запустим его из командной строки:
> android avd
Окно Android Virtual Device Manager, здесь можно создавать новые AVD и настраивать существующие
Эмуляция Android Wear
Создадим конфигурацию виртуального устройства для Android Wear так, как показано на рисунке ниже.
Настройка конфигурации эмулятора для Android Wear
После того, как настройки выполнены, нажмём кнопку OK, после чего – запустим эмулятор. Для этого его нужно выделить в окне AVD Manager и нажать на кнопку Start. Вот как выглядит окно эмулятора.
Окно эмулятора Android Wear
Для того чтобы смартфон мог взаимодействовать с устройством, работающим под управлением Android Wear (или с соответствующим эмулятором), нужно дополнительное приложение. Единственный способ установить это приложение на устройство – загрузка из Магазина Google Play. Соответственно, нам понадобится Android-смартфон, который имеет доступ к Магазину.
Устройство должно быть доступно для ADB. Для того чтобы оно смогло подключиться к эмулятору, нужно, чтобы и смартфон, и эмулятор, присутствовали в списке устройств, который можно получить следующей командой:
> adb devices
Список подключенных устройств
Теперь перенаправим TCP-порты такой командой:
> adb -d forward tcp:5601 tcp:5601
Теперь всё готово для сопряжения эмулятора Android Wear и аппаратного устройства. Осталось лишь запустить на смартфоне приложение Android Wear, и, из его меню, выполнить команду подключения к эмулятору. Если подключение удалось, экран эмулятора будет выглядеть так, как показано в левой части рисунка. В правой части показан экран эмулятора, не подключенного к смартфону.
Экраны эмулятора Android Wear в подключенном (слева) и неподключенном (справа) состоянии
Подробные сведения о создании приложений для Android Wear можно найти здесь. APK-файл тестового приложения ничем не отличается от других APK, его можно установить на эмулятор Android Wear с использованием ADB.
> adb -s emulator-5554 install -r mobile\build\outputs\apk\mobile-debug.apk
Проверить, установлено ли приложение на эмуляторе, можно с помощью такой команды:
> adb -s emulator-5554 shell pm list packages | grep example
Установка приложения на эмулятор и проверка установки
Имя пакета приложения-примера (com.example.android.uamp) присутствует в списке. Из командной строки можно и запустить приложение:
> adb -s emulator-5554 shell monkey -p com.example.android.uamp -c android.intent.category.LAUNCHER 1
Теперь приложение запущено на эмуляторе Android Wear
Эмуляция Android TV
Создадим конфигурацию виртуального устройства для Android TV так, как показано на рисунке ниже.
Настройка конфигурации эмулятора для Android TV
После настройки нажмём на кнопку OK и запустим эмулятор кнопкой Start в окне ADV Manager.
Проверить доступность эмулятора для ADB можно такой командой:
> adb devices
Запишите или запомните идентификатор эмулятора (что-то вроде emulator-55xx). Он понадобится для указания целевого устройства при работе с эмулятором с помощью ADB. Для установки приложения на эмулятор можно воспользоваться такой командой:
> adb -s emulator-55xx install -r mobile/build/outputs/apk/mobile-debug.apk
Запустить приложение на эмуляторе Android TV можно так:
> adb -s emulator-55xx shell monkey -p com.example.android.uamp -c android.intent.category.LAUNCHER 1
Вот как приложение выглядит на экране эмулятора.
Приложение, запущенное на эмуляторе Android TV
Создание и запуск необходимого количества экземпляров эмуляторов
Если в ходе разработки и тестирования приложения возникает необходимость создания и запуска нескольких экземпляров эмуляторов – всё это достижимо с использованием Intel HAXM. При установке HAXM можно настроить размер оперативной памяти, который отводится для его работы. Вот набор конфигураций AVD для Android Wear, TV и смартфона.
Список виртуальных устройств Android
Ниже вы можете видеть приложение-пример, запущенное одновременно на трёх виртуальных устройствах (Android TV, Wear и эмулятор смартфона). Здесь же показаны сведения об использовании CPU. Как видно, все эти экземпляры эмулятора не создают чрезмерной нагрузки на систему.
Три одновременно запущенных эмулятора и сведения о нагрузке на систему, которую они создают
В ходе работы можно настраивать выделение памяти для эмуляторов, оптимизируя потребление ими системных ресурсов. Для того, чтобы перенастроить параметры выделения памяти, заданные при установке HAXM, нужно повторно запустить его установку и указать нужные параметры.
Итоги
В этом материале мы продемонстрировали основные возможности Intel HAXM. Здесь вы можете найти подробности об использовании и настройке Android-эмуляторов. Для того чтобы проверить правильность установки HAXM, а так же то, используется ли он при работе с эмуляторами, обратитесь к этому материалу. Надеемся, Intel HAXM станет вашим надёжным помощником в деле разработки Android-приложений для самых разных устройств, работающих на этой платформе.
Комментарии (12)
CAJAX
02.09.2015 15:21-1А HAXM перестал винду валить в синий экран? По крайней мере в прошлом году этой штукой невозможно было пользоваться.
CooperMaster
02.09.2015 16:38+3Я пользуюсь HAXM со второй половины прошлого года, проблем не заметил. Сейчас их тоже нет. А вообще, если у одних работает, у других нет — надо разбираться с конкретным ПК. Какая ОС? Что еще установлено? Какое железо? Как настроен BIOS? Какой температурный режим? Нет ли проблем с памятью, питанием? Делался ли сброс всего, что можно, на параметры по умолчанию (исключая то, что нужно для работы HAXM в BIOS, если в конкретном экземпляре параметры по умолчанию отличаются от требований HAXM)? Делалась ли установка чистой системы и средств разработки?
CAJAX
02.09.2015 17:17Это происходило на разных машинах с разной памятью и чипсетами (хотя конкретно в моем случае обе машины от Asus на 7 и 8 винде). И это было не только моя проблема. В багтрекере гугла есть несколько упоминаний с теми же симпотомами.
Правда с тех пор, как эмулятор начал падать (да, поначалу работал стабильно) я перешел на эмулятор ARMа и с тех пор не проверял. Поэтому и спросил.
Valle
02.09.2015 17:59Я так понимаю, проблемы с HAXM только на виндах разнообразных. На маках все достаточно стабильно.
Newbilius
02.09.2015 22:30Я пользуюсь HAXM больше года на нескольких ПК, ни на одном ни разу в синий экран не падал. Все под Windows.
Видимо автору изначального комментария в ветке просто не повезло…
Valle
02.09.2015 17:57+1Пошел посмотреть, что в статье подразумевается под «охватить одной кодовой базой множество различных Android-устройств.».
Оказывается — minSdkVersion 21 (Android 5.0)
anton9088
02.09.2015 18:19HAXM эмулятор зависает через пару минут после работы, так и не смог нормально поставить google play services и тестировать пуши. В Genymotion же никаких проблем не замечено
BupycNet
06.09.2015 15:57Имею ноутбук с AMD процессором, у меня почему то раньше, еще до того как интел представил своё ускорение на этом ноуте более менее сносно загружался старый эмулятор ARM. Теперь и x86 не работает (в AMD проце нет ускорения от интел) и ARM ждал 3 часа — не загрузился 5.0.1
maaGames
Каким чудом удалось запустить эмулятор ATV с 2048 мегабайтами памяти? Стоит превысить 768МБ и начинаются угрозы и слёзы и всё равно 768 испольтзует.
CooperMaster
По-моему это зависит от конфигурации системы (настройки HAXM и возможности компьютера). Специально пересоздал эмулятор, дал ему 2 Гб. Он, правда, при запуске всё не использовал, сказал, что может только 1,5 (не 700, как в комментарии). Вот как это в итоге выглядит:
Подозреваю, что на еще менее мощных системах он выделит еще меньше.
maaGames
У меня не хватит кармы для скриншота, поэтому вот копипаста того, что пишет эмулятор при попытке указать больше 768МБ:
"On Windows, emulating RAM greater than 768MB my fail depending on the system load. Try progressively smaller values of RAM if the emulator fails to launch."
При этом эмулятор не падает, но при запуске перезаписывает количество памяти на какое-то меньшее число, я не успел прочитать… Хотя, в диспетчер задач зашёл, а там эмулятор 1,8ГБ съел. Но я то просил 2048.
В системе 16ГБ, для HAXM выделил большую кучу, а оно ругается…