Что делать, если под рукой нет Android-устройства? Обзор Android-эмуляторов

Введение


Часто бывает необходимость проверить работу свеженаписанного приложения на устройстве. Но вполне может оказаться, что устройства под рукой нет. Или нет устройства с определенными параметрами (правда, это больше относится к размеру/разрешению экрана). Что же делать в этом случае?
К счастью, альтернативы есть. Android-сообщество и разные компании предлагают на выбор несколько вариантов замены android-устройств для разных целей.

Я кратко расскажу о следующих:
  • Эмулятор в составе SDK
  • Genymotion
  • Android x86
  • Bluestacks

Если интересно — добро пожаловать под кат (осторожно, достаточно много картинок)

Эмулятор в составе SDK


image

Сайт: http://developer.android.com/sdk/index.html
Самый очевидный способ подмены устройства. Если занимаешься разработкой под Android — эмулятор точно есть.

Использование

Для использвания достаточно открыть AVD Manager из эклипса или в консоли
/path/to/sdk/tools/android avd
создать свой AVD (Android Virtual Device) и запустить. Более подробно процесс описывать не буду, все достаточно просто.
Однако не обошлось без особенностей. ARM-эмуляторы до ужаса медленные. Что-то нормально проверить практически невозможно, особенно на не очень сильном железе (потому что эмуляция процессора с другой архитектурой). Тут на помощь может прийти технология Intel HAXM, однако это чревато тем, что платформо-зависимый код (который должен работать под ARM) может не работать, поскольку используется x86.
Скриншоты
AVD manager

Параметры запуска

Сам эмулятор



Плюсы

  • Кроссплатформенное решение
  • Входит в состав SDK, не нужны сторонние тулы
  • Конфигурируемый (размер памяти, подключение камеры и т.д)
  • Доступ по telnet для настройки параметров сети, батареи и т.д.
  • Плагин для Eclipse, легкий доступ через adb
  • Обновляется сразу после выхода новой версии Android

Минусы



Genymotion


image

Сайт: http://www.genymotion.com/
Проприетарная реализация, выросшая из проекта AndroVM.
По сути, виртуальная машина на VirtualBox с дополнительными фишками вроде своих контролов, расширенной настройки и т.д.
Достаточно удобен, быстр, много возможность, коммандлайн тулы, Java API для тестов.
При создании устройства из сети выкачивается его образ.
APK можно устанавливать, перетянув их на окно с виртуалкой.
Скриншоты
Окно работающего девайса

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

Главное окно приложения


Плюсы

  • Кроссплатформенное решение
  • Быстрый
  • Много дополнительных тулов (контроль заряда, акселерометра, API для тестов и т.д.)
  • Плагин для Eclipse, легкий доступ через adb

Минусы

  • Платный для компаний, и это главный минус
  • Не ARM
  • Достаточно долгий выход актуальных версий Android


Android x86


image

Сайт: http://www.android-x86.org/
Проект по портированию Android на платформу x86. Распространяется в виде образа iso, можно запустить/установить в виртуальной машине, при большом желании можно даже поставить на живую машину с x86 процессором (на ноутбук, например).
Работает быстро, но есть куча проблем из-за того, что это виртуальная машина. Например, привязывние мыши внутри окна виртуалки, доступ к adb только по сети и т.д.

Для использования в VirtualBox нужно отключать Mouse Integration, иначе в виртуальной машине не видно курсора.

Для подключения adb нужно выполнить
adb connect ip.add.res.s

IP-адрес можно узнать, нажав в машине Alt+F1 и введя netcfg. Вернуться в графический режим — Alt+F7.
Скриншоты
Главное окно:

Консоль с IP-адресом:


Плюсы

  • Кроссплатформенное решение (везде, где есть VirtualBox)
  • Быстрый

Минусы

  • Неудобный доступ к adb
  • Минусы, связанные с использованием VM — привязка мыши, например
  • Не ARM
  • Очень долгий выход актуальных версий


Bluestacks




Сайт: www.bluestacks.com
Позиционируется как плеер приложений для Windows, Mac и TV. Умеет запускать приложения, имеет доступ к маркету. Неудобен для разработки и тестирования — apk ставятся тулом из комплекта, но доступ к adb можно получить. Однако для запуска приложений может быть полезен.
Для подключения через adb:
adb connect 127.0.0.1

Скриншоты
Запуск:

Главное окно:


Плюсы

  • Кроссплатформенное решение (правда, только Mac и Windows)
  • Быстрый

Минусы

  • Неудобно ставить приложения
  • Непонятно, что с версиями android (2.3 под OS X, под Windows ставился 4.0)
  • Нет под linux


Вывод


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

Ну. И что?
Реклама
Комментарии 33
    +1
    Есть такой прекрасный сайт: manymo.com/emulators
      0
      Он же медленный до ужаса (вроде и интернет у меня не слишком узкий). Но в общем-то да, спасибо, учту на будущее — зато ставить ничего не нужно.
        +1
        Для тестирования мобильных сайтов самое оно.
      +3
      я пользуюсь Genymotion и рад очень. Очень хороший эмулятор.
        0
        От себя добавлю, что мне о-о-очень помог этот эмулятор, когда делал навигационное приложение — уж очень удобно в этом эмуляторе подделывать изменение локейшена.
          0
          Так для эмулятора из SDK тоже можно менять (хоть и не так удобно, пожалуй) — через telnet командой
          geo fix <longtitude> <latitude>
          
            0
            А можно удобно через DDMS

            image
              0
              Спору нет, менять локейшен можно, но вот по удобству и функциональности Genymotion на порядок лучше ваших вариантов, и в обратном вы меня не переубедите :P

          0
          Genymotion хорош, да. Есть у него, правда, одна болячка… Спустя некоторое время виртуальные устройства перестают запускаться — выдается «Genymotion could not find network» или что-то в этом роде. Пересоздание устройства, переустановка Genymotion, удаление сетевого интерфейса VirtualBox не помогает.
          +1
          Через bluestacks дебажить можно, к adb отлично eclipse подключается. Исправьте, пожалуйста.
            +1
            Спасибо, ошибался, пост поправил.
            +2
            В Genymotion можно «включить» режим ARM
            Для этого необходимо установить ARM Translator.
            forum.xda-developers.com/showthread.php?t=2528952
            Также можно прикрутить Goggle Play и тестировать приложения, которым необходимы гугловские сервисы.
            Про это также можно прочитать на форуме, перейдя по ссылку, которую я предоставил чуть выше.
              0
              Насчет гугл-сервисов, кстати. Их можно поставить (с полноценным маркетом) и в эмулятор из SDK, они есть в Android x86 и в Bluestacks.
              А за ссылку спасибо, полезно.
              +1
              Почти оффтоп, а нет ли эмулятора на котором можно поиграть в более менее свежие игры, а-ля Fifa14 и MC4?
                0
                Можно попытаться в Bluestacks, судя по роликам на YouTube — даже работает. Желательно на Windows, там андроид 4.0.
                  0
                  Судя по роликам – там скринкаст, а не игра получается)
                0
                По опыту с автотестированием, SDK и Genymotion — это практически одно и тоже по части скорости и совместимости с приложениями.
                Вот BlueStack интересен тем что у него при той же скорости выше совместимость, например в отличие от любого другого андройдного эмулятора BlueStack умеет принимать звук на вход без искажения. Но вот управлять приложением из тестов в BlueStack у нас не получилось
                  –1
                  По опыту с автотестированием, SDK и Genymotion это практически одно и тоже по части скорости и совместимости с приложениями.

                  Што? Про какой SDK вы говорите? Genymotion работает быстрее, чем nexus 5.
                    +1
                    нормально настроенный HAXM не дает какого-то такого проигрыша в производительности чтобы целенаправленно переходить на Genymotion. Но это вовсе не значит что вам или еще кому-то надо переходить на SDK эмулятор если вам подходит и удобен genymotion
                      –1
                      Теперь понял вашу мысль. Все равно, для пользователей AMD, Genymotion является единственным решением.
                        +2
                        Nope, на линуксе и с AMD процами всё прекрасно работает через kvm.
                  0
                  В Bluestacks из коробки стоит android 4.0.4 с разрешением экрана 1066x552. В бенчмарках скорость эмуляции процессора не особо выдающаяся, но всё остальное на уровне современных смартфонов, включая 3D. Точные цифры, полагаю, писать нет смысла, т. к. они зависят от производительности хоста.
                    0
                    На OS X у меня поставился 2.3.4. Разрешение 1280х720, выдает себя за Galaxy Note. Но работает и правда очень быстро.
                    0
                    Windroy (раньше WindowsAndroid) ещё есть — Android поверх Windows API. Вылетает постоянно и непонятно, есть ли там вообще эмуляция хардварных кнопок, но быстрый, более-менее подходит для платформонезависимых приложений.
                      0
                      Встречал ли кто-нибудь эмулятор устройства с двумя сим-картами?

                      Гугл официально две сим-карты не поддерживает, так что, теоретически, это должен быть эмулятор от производителя таких устройств (Samsung, например ;).
                        +1
                        Пожалуйста, переместите статью в хаб "Разработка под Android". Программисты будут рады увидеть вашу статью в новостях. А людям, интересующимся именно операционной системой Android, этот топик будет только мешать
                          0
                          Done. Спасибо за подсказку.
                          0
                          Использую BlueStacks — быстрый и удобный.
                            0
                            После эмулятора из SDK, Genymotion показался мне манной небесной. Всё в нём прекрасно: и время запуска, и плавность интерфейса, причём, ограничиваюсь только бесплатной версией.
                              0
                              Попробуйте настроить HAXM. Что на маке, что на Windows, что на Ubuntu — пропали все проблемы с эмулятором. Запускается за пару секунд, не тормозит интерфейс. Но в общем-то да, Genymotion шчень плавный и приятный.
                                0
                                Когда-то, не желая тестировать на своём девайсе, уже пытался запустить haxm, но, кажется, ему не понравился мобильный чипсет моего старого ноутбука. К слову, genymotion'у он тоже не понравился, но уже неявно, во время запуска эмулятора :).
                                Ну и теперь разве можно вернуться к этому старому SDKшному интерфейсу создания и настройки эмулятора, после этой установки виртуальных девайсов в два клика?

                                image
                              0
                              Может кто-то подсказать эмулятор, на котором без проблем можно запустить instagram? Как-то давно пробовал — не увенчалось успехом.
                                0
                                Инстаграм, судя по всему, использует в фильтрах индусский нативный код, поскольку на одном аппарате от Huawei, с которым я достаточно долго проходил, он падал при выборе одного определённого фильтра, приходилось его перескакивать. Падал молча, даже без стандартного предложения зарепортить баг. А у этого аппарата немного нестандартный процессор (слегка модифицированный набор инструкций, какая-то аппаратная runtime-оптимизация или что-то подобное, если я правильно понял обзор)

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

                              Самое читаемое