Эмулятор Bluestacks + Eclipse: ускоряем отладку и тестирование Android-приложений

  • Tutorial
Об эмуляторе Android под названием Bluestacks на Хабре уже писали. Но писали или в общем, или мало, или сухо. Тем временем проект подрос и ныне вполне пригоден для использования при тестировании и отладке приложений под Android. Зачем это делать? А затем, что Bluestacks работает намного, нет, даже намного-намного быстрее стандартного эмулятора из Android SDK. Под катом я расскажу о нюансах использования Bluestacks, настройке отладки из-под Eclipse, приведу пару замеров скорости работы и расскажу о нескольких ложках дёгтя в бочке мёда.

Установка


Всё стандартно — качаем, ставим. Предупреждаю сразу, по ходу установки эмулятора на Win7 он у меня завис, причём качественно так — вместе с Windows. Это, конечно, немного испортило первое впечатление, но после перезагрузки Bluestacks заработал нормально. В общем, можно воспринимать это всё как принудительную перезагрузку по ходу установки — закрывайте важные программы перед запуском инсталлятора.

Запуск


Запускается ярлычком на рабочем столе или из контекстного меню иконки в трее. Запуск на моём компьютере занимает 25 секунд, а стандартного эмулятора — 58 секунд. Запуск, конечно, мелочь — происходит максимум пару раз в день. Но всё-равно приятная мелочь.



Отладка в Eclipse


Если вы запустите сначала Bluestacks, а потом Eclipse, то Eclipse сам найдёт эмулятор (это можно проверить на табе «Devices»).



Если вы будете перезапускать эмулятор и\или Eclipse — соединение может потеряться. Восстановить его можно командой
adb connect 127.0.0.1

Утилита adb входит в Android SDK (у меня она находится в папке C:\Users\%MyUser%\android-sdk\platform-tools)

Теперь при запуске вашего Андроид-приложения оно будет устанавливаться и запускаться не на стандартном эмуляторе, а на Bluestacks.

Скорость работы (субъективно)


После месяцев работы на тормозном стандартном эмуляторе вам покажется, что это магия. Отклик мгновенный. Открытие нового экрана (по обработчику на кнопке) происходит еще до того, как ваш палец замрёт после отпускания кнопки мыши. Всякие там асинхронные запросы к сети, по ходу работы которых на обычном эмуляторе долго крутился прогресс-бар теперь вызывают сомнения в том, что прогресс-бар вообще появляется. А самое главное — теперь по ходу отладки можно открыть вкладку Variables в Eclipse с полусотней свойств объектов и увидеть их все сразу, моментально, а не наблюдать 10 секунд анимацию их обновления — от самого верхнего к самому нижнему. В общем, наконец-то можно работать.

Скорость работы (объективно)


Установка и запуск Hello World

Тест первого деплоя, при запущенном эмуляторе, от «Run» в Eclipse до надписи «Hello World » на экране.

Стандартный эмулятор — 28 сек
Bluestacks - 7 сек


Цикл

Замерялось время выполнения вот такого кода:

long startTime = System.currentTimeMillis();
long a = 0;
Random rnd = new Random();
for (int i = 0; i < 10000000; i++){
	a += rnd.nextLong();
}
long estimatedTime = System.currentTimeMillis() - startTime;
Log.d(Long.toString(a), Long.toString(estimatedTime));


Стандартный эмулятор — 41 сек
Bluestacks — 2.3 сек


Запрос статической странички с веб-сервера в локальной сети


Стандартный эмулятор — 4 сек
Bluestacks — 0.8 сек

FAQ


Он платный, что ли?
Неа. Ну пока, по крайней мере.

Где ложка дёгтя?
За время пользования Bluestacks (пару недель) я нашел три смущающих момента:
  1. Он иногда зависает. Так же, как при установке — вместе с Windows. Иногда — это где-то 1 раз в 2-3 дня при использовании по 10 часов в день. Поскольку перезагрузка занимает у меня 1 минуту максимум, а времени и нервов Bluestacks экономит просто вагон, я счёл это приемлимой жертвой.
  2. Он ставит в эмулятор какие-то свои приложения и показывает их на специальной панельке «Рекомендованные». Может быть ему кто-то за них платит(хотя на сайте говорят, что нет). В любом случае — это просто немного лишнего трафика и пару иконок. Запускать эти программы никто не заставляет.
  3. При запущенном Bluestacks в родительской ОС иногда перестают работать клавиши-стрелки (влево, вправо, вверх, вниз). Почему это происходит и как бороться я пока не разобрался.


А под Linux и Mac работает?
Под Mac — да, под Linux — пока нет.

Размер экрана и ориентация меняются?
Частично. Есть несколько конфигураций, между которыми можно переключаться. Выбрать произвольный размер пока нельзя.

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

Ссылки по теме


Сам Bluestacks
Форум
FAQ на родном сайте
Инфопульс Украина 166,77
Creating Value, Delivering Excellence
Поделиться публикацией
Похожие публикации
Комментарии 38
  • +3
    На случай, если кто не знает, есть еще одна альтернатива — Android x86 под каким-либо VM. Скорость работы превосходит все возможные ожидания, а за счет снепшотов в VMWare/VirtualBox работать в разы удобнее, не говоря о возможности гибкой настройки сети. Но есть и ложга дегтя: соотношение сторон 4/3 и невозможность использовать NDK под ARM. Если Вашей программе это не критично, то лучше варианта не найти.
    • 0
      Согласен. Скорость выполнения цикла у меня в VirtualBox на Athlon II X3 3.3 GHz: 2179.
      • 0
        разрешение можно выставить в конфигурационных файлах для вашей виртуалки (virtualbox)
        • 0
          Можно выставить любое разрешение и соотношение сторон, а также DPI, а не только 4/3.
          Подробности тут: dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html

          Главное не забыть выполнить sync.
          • 0
            NDK x86 заработает? То есть если приложение имеет x86 библиотеки внутри, будет работать?
            • 0
              Конечно, это ведь полноценный Android на x86 в виртуалке.
          • +1
            Неплохо было бы увидеть сравнение всех возможных вариантов — а это помимо уже названного Android x86, еще и «родной» эмулятор x86.
            • 0
              Цикл

              Замерялось время выполнения вот такого кода:

              Возник вопрос о корректности этого бенчмарка. В Android класс java.util.Random реализован без NDK (как и в OpenJDK, собственно), но вполне может оказаться, что в BlueStacks сделана обертка над системными вызовами. Если есть возможность, включите в свой проект код Random и замерьте снова, чтобы убедиться в чистоте теста.
              • 0
                По поводу размера экрана на Маке с ретиной — те же грабли как и с обычным эмулятором, или отображается номально?
                • +1
                  Сорри, у меня нету мака с ретиной, не могу проверить.
                • +1
                  А OpenGL ES 2.0 он поддерживает?
                  • 0
                    Да, если ему понравится видяха компа.
                  • 0
                    К ложкам дёгтя стоит добавить пару пунктов из лицензионного соглашения:
                    By providing us with your mobile telephone number you consent to our use of that number to send you text or SMS messages with details of offers, our services and other advertising, until you tell us to stop.
                    Указав свой (настоящий) номер телефона, вы подписываетесь на СМС-спам.
                    Any commercial use of the Bluestacks Software is strictly prohibited, except as allowed herein or otherwise approved by us.
                    Коммерческое использование запрещено.
                    • 0
                      Быстрее Intel HAXM?
                      • 0
                        Вопрос был явно не ко мне, но я из любопытства проверил.

                        Оба эмулятора запускаются с нуля примерно за одинаковое время — 15 с (на ноутбуке с i5 и 4ГБ). Деплой из эклипса в x86 занимает примерно три секунды, в Bluestacks — одну.
                        Если отключить анимацию (которая в Bluestacks не включается, а в x86 тормозит), Bluestacks субъективно немного отзывчивее (на грани погрешности).
                        Ещё в x86 почему-то не заработала аппаратная клавиатура, в Bluestacks всё окей.

                        Зато в x86 больше настроек и нет панели «Suggested Apps» :)
                      • 0
                        Куда его указывать то (вписывать), свой номер телефона?
                        WhatsApp хочется.
                      • 0
                        Не запустился аргументирую тем, что у меня установлено «virtual pc software». Чем ему помешало наличие VmWare Player или MS Virtual PC не понимял. После прочтения их рекомендаций — сразу в мусор.
                      • 0
                        Под мак предлагают только какой-то Bluestack App Player, где можно запускать какие-то приложения для андроид из доступных. Я что-то делаю не так?
                        • 0
                          Ну, вообще-то оно и под Windows так называется. Запускаете плеер — дальше см. пункт про настройку отладки в статье.
                          • 0
                            А не подскажите — где лежать файлы самой системы? Чтобы проделать описанное в apk-manager.com/2012/03/how-to-install-android-market-on-bluestacks-beta.html
                            • 0
                              Извините, не понял вопроса. Ставить приложения из маркетов можно сразу, из коробки. Еще и поиск удобный есть, сразу по нескольким маркетам. А если Вам нужен путь, куда был установлен Bluestacks — так куда поставите, там и будет.
                              • 0
                                Если мы говорим об одном и том же то у меня маркеты выглядят вот так
                        • 0
                          Поставил, скорость восхитительная. Вот только теперь никак не могу найти, как заставить приложение отображаться в портретном режиме.
                          • 0
                            справа внизу кнопка, там для каждого приложения можно выбрать размер.
                            • 0
                              Это да, но даже с другим размером они все у меня в ландшафтной ориентации. Как поставить портретную?
                          • 0
                            по ходу подключиться к виртуальной машине по 127.0.0.1:5555 нереально, если уже установлена какая-то другая, например VirtualBox. Во всяком случае под мак. А жаль.
                            • 0
                              Столкнулся с той же проблемой, однако нашел решение.
                              Если зайти в папку, где лежит сам BlueStacks, то там можно найти лог системы. А в нем есть строчки:
                              Adding redirect for guest port tcp/5555
                              uHD-Network(14756: 1799): Trying host port 10001
                              uHD-Network(14756: 1799): Using host port tcp/10001 for guest tcp/5555
                              

                              Я попробовал подключиться к adb connect localhost:10001 и ура!
                              • 0
                                Только сейчас добрался снова до этого топика (по ходу его кто-то удалил до этого). Спасибо, заработало!
                            • 0
                              Запустил BlueStacks, запустил Eclipse, — ничего не нашлось.
                              Проверял так как вы писали. «это можно проверить на табе «Devices»» — у меня этот таб пустой.
                              Пробую что-то под Андроид писать, хочется сразу быстрый эмулятор.

                              Не подскажете в чем может быть фишка?
                              Спасибо.
                              • 0
                                Ну в статье же написано, что делать — adb connect 127.0.0.1
                                • 0
                                  где его писать то? в командной строке не идет, не знает это команды.
                                  Пасиб.
                                  • 0
                                    Прочитайте уже эти несчастные 3 предложения в статье. Там же всё написано.
                                    • 0
                                      tangro — прошу прощения, перечитал несколько раз, но не внимательно. :(
                                      Наконец увидел, и подключил.
                                      «Утилита adb входит в Android SDK (у меня она находится в папке C:\Users\%MyUser%\android-sdk\platform-tools)»

                                      Только теперь
                                      [2012-08-04 13:57:27 — HelloAndroid] ERROR: Application requires API version 14. Device API version is 10 (Android 2.3.4).
                                      [2012-08-04 13:57:27 — HelloAndroid] Launch canceled!
                                      • 0
                                        Понятно в чем ошибка, но что сделать? Этот эмулятор не работает под 4 Анлриод, или я не так понял?
                                        • 0
                                          Видимо, Вы пытаетесь запустить программу, работающую исключительно на Андроид 4. Bluestacks пока поддерживает только 2.3.4
                                          • 0
                                            Да, так и есть, понял, спасибо за помощь. :)
                                • 0
                                  И еще недостаток — для линукса версии нет…

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

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