Введение
Часто бывает необходимость проверить работу свеженаписанного приложения на устройстве. Но вполне может оказаться, что устройства под рукой нет. Или нет устройства с определенными параметрами (правда, это больше относится к размеру/разрешению экрана). Что же делать в этом случае?
К счастью, альтернативы есть. Android-сообщество и разные компании предлагают на выбор несколько вариантов замены android-устройств для разных целей.
Я кратко расскажу о следующих:
- Эмулятор в составе SDK
- Genymotion
- Android x86
- Bluestacks
Если интересно — добро пожаловать под кат (осторожно, достаточно много картинок)
Эмулятор в составе SDK
![image](https://habrastorage.org/getpro/habr/post_images/385/947/dda/385947ddab4d5e9e2041cd547d56c436.png)
Сайт: 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
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/8f1/44f/b90/8f144fb90283225686ca5b76432cf5b7.png)
Параметры запуска
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/2e2/3a4/002/2e23a40028e6f63c006ddf5740537d5c.png)
Сам эмулятор
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e3b/ab1/c64/e3bab1c64a09005f3abb6c0581c25d68.png)
![](https://habrastorage.org/getpro/habr/post_images/8f1/44f/b90/8f144fb90283225686ca5b76432cf5b7.png)
Параметры запуска
![](https://habrastorage.org/getpro/habr/post_images/2e2/3a4/002/2e23a40028e6f63c006ddf5740537d5c.png)
Сам эмулятор
![](https://habrastorage.org/getpro/habr/post_images/e3b/ab1/c64/e3bab1c64a09005f3abb6c0581c25d68.png)
Плюсы
- Кроссплатформенное решение
- Входит в состав SDK, не нужны сторонние тулы
- Конфигурируемый (размер памяти, подключение камеры и т.д)
- Доступ по telnet для настройки параметров сети, батареи и т.д.
- Плагин для Eclipse, легкий доступ через adb
- Обновляется сразу после выхода новой версии Android
Минусы
- Медленный, если не использовать HAXM
- Не ARM, если использовать HAXM
- Нет эмуляции Bluetooth, OTG, наушников и некоторых других железных параметров
Genymotion
![image](https://habrastorage.org/getpro/habr/post_images/63a/959/dc4/63a959dc43046f6f47348ec3a5d5a644.png)
Сайт: http://www.genymotion.com/
Проприетарная реализация, выросшая из проекта AndroVM.
По сути, виртуальная машина на VirtualBox с дополнительными фишками вроде своих контролов, расширенной настройки и т.д.
Достаточно удобен, быстр, много возможность, коммандлайн тулы, Java API для тестов.
При создании устройства из сети выкачивается его образ.
APK можно устанавливать, перетянув их на окно с виртуалкой.
Скриншоты
Окно работающего девайса
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/807/397/43e/80739743e51feb7586d7f94caabc6e07.png)
Создание виртуального девайса
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/c4c/e3c/623/c4ce3c623a190efb764a8418c0c08c2c.png)
Главное окно приложения
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/0ae/ca7/822/0aeca7822985e33c86b402ac8c8f2c1c.png)
![](https://habrastorage.org/getpro/habr/post_images/807/397/43e/80739743e51feb7586d7f94caabc6e07.png)
Создание виртуального девайса
![](https://habrastorage.org/getpro/habr/post_images/c4c/e3c/623/c4ce3c623a190efb764a8418c0c08c2c.png)
Главное окно приложения
![](https://habrastorage.org/getpro/habr/post_images/0ae/ca7/822/0aeca7822985e33c86b402ac8c8f2c1c.png)
Плюсы
- Кроссплатформенное решение
- Быстрый
- Много дополнительных тулов (контроль заряда, акселерометра, API для тестов и т.д.)
- Плагин для Eclipse, легкий доступ через adb
Минусы
- Платный для компаний, и это главный минус
- Не ARM
- Достаточно долгий выход актуальных версий Android
Android x86
![image](https://habrastorage.org/getpro/habr/post_images/c9c/5f8/503/c9c5f8503ff0e1fa77f711b421f00822.png)
Сайт: 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.
Скриншоты
Главное окно:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/776/0a2/5c4/7760a25c48629f972cc7fd0d65d08112.png)
Консоль с IP-адресом:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/f32/d09/a20/f32d09a207f956408322e4ed73f75625.png)
![](https://habrastorage.org/getpro/habr/post_images/776/0a2/5c4/7760a25c48629f972cc7fd0d65d08112.png)
Консоль с IP-адресом:
![](https://habrastorage.org/getpro/habr/post_images/f32/d09/a20/f32d09a207f956408322e4ed73f75625.png)
Плюсы
- Кроссплатформенное решение (везде, где есть VirtualBox)
- Быстрый
Минусы
- Неудобный доступ к adb
- Минусы, связанные с использованием VM — привязка мыши, например
- Не ARM
- Очень долгий выход актуальных версий
Bluestacks
![](https://habrastorage.org/getpro/habr/post_images/201/e60/e3e/201e60e3ee605b65fb6e4ecdd57da9e4.jpg)
Сайт: www.bluestacks.com
Позиционируется как плеер приложений для Windows, Mac и TV. Умеет запускать приложения, имеет доступ к маркету. Неудобен для разработки и тестирования — apk ставятся тулом из комплекта, но доступ к adb можно получить. Однако для запуска приложений может быть полезен.
Для подключения через adb:
adb connect 127.0.0.1
Скриншоты
Запуск:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e8a/53a/58f/e8a53a58f2fde6bf9cff2c4ae7b0bf5c.png)
Главное окно:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/a18/a87/9c7/a18a879c733486e72a21cebba68b5380.png)
![](https://habrastorage.org/getpro/habr/post_images/e8a/53a/58f/e8a53a58f2fde6bf9cff2c4ae7b0bf5c.png)
Главное окно:
![](https://habrastorage.org/getpro/habr/post_images/a18/a87/9c7/a18a879c733486e72a21cebba68b5380.png)
Плюсы
- Кроссплатформенное решение (правда, только Mac и Windows)
- Быстрый
Минусы
- Неудобно ставить приложения
- Непонятно, что с версиями android (2.3 под OS X, под Windows ставился 4.0)
- Нет под linux
Вывод
Получается, что для некоторых ситуаций можно обойтись и без девайса. Однако не стоит забывать, что во многих случаях железо эмуляторов отличается от реального, да и прошивки реальных устройств тоже могут подбросить сюрпризов. Поэтому эмуляторы — всего лишь для начальной проверки.