Введение
Часто бывает необходимость проверить работу свеженаписанного приложения на устройстве. Но вполне может оказаться, что устройства под рукой нет. Или нет устройства с определенными параметрами (правда, это больше относится к размеру/разрешению экрана). Что же делать в этом случае?
К счастью, альтернативы есть. Android-сообщество и разные компании предлагают на выбор несколько вариантов замены android-устройств для разных целей.
Я кратко расскажу о следующих:
- Эмулятор в составе SDK
- Genymotion
- Android x86
- Bluestacks
Если интересно — добро пожаловать под кат (осторожно, достаточно много картинок)
Эмулятор в составе SDK
Сайт: 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.
Параметры запуска
Сам эмулятор
Плюсы
- Кроссплатформенное решение
- Входит в состав SDK, не нужны сторонние тулы
- Конфигурируемый (размер памяти, подключение камеры и т.д)
- Доступ по telnet для настройки параметров сети, батареи и т.д.
- Плагин для Eclipse, легкий доступ через adb
- Обновляется сразу после выхода новой версии Android
Минусы
- Медленный, если не использовать HAXM
- Не ARM, если использовать HAXM
- Нет эмуляции Bluetooth, OTG, наушников и некоторых других железных параметров
Genymotion
Сайт: http://www.genymotion.com/
Проприетарная реализация, выросшая из проекта AndroVM.
По сути, виртуальная машина на VirtualBox с дополнительными фишками вроде своих контролов, расширенной настройки и т.д.
Достаточно удобен, быстр, много возможность, коммандлайн тулы, Java API для тестов.
При создании устройства из сети выкачивается его образ.
APK можно устанавливать, перетянув их на окно с виртуалкой.
Создание виртуального девайса
Главное окно приложения
Плюсы
- Кроссплатформенное решение
- Быстрый
- Много дополнительных тулов (контроль заряда, акселерометра, API для тестов и т.д.)
- Плагин для Eclipse, легкий доступ через adb
Минусы
- Платный для компаний, и это главный минус
- Не ARM
- Достаточно долгий выход актуальных версий Android
Android x86
Сайт: 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 нет, дебажить не получится. Однако для запуска приложений может быть полезен.
Главное окно:
Плюсы
- Кроссплатформенное решение (правда, только Mac и Windows)
- Быстрый
Минусы
- Нет доступа к adb
- Неудобно ставить приложения
- Непонятно, что с версиями android (по виду — 2.3)
- Нет под linux
Вывод
Получается, что для некоторых ситуаций можно обойтись и без девайса. Однако не стоит забывать, что во многих случаях железо эмуляторов отличается от реального, да и прошивки реальных устройств тоже могут подбросить сюрпризов. Поэтому эмуляторы — всего лишь для начальной проверки.
Автор: romashko_o