Эмуляция. Стандартный эмулятор Android
Эмуляция (англ. emulation) в вычислительной технике - комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другой, отличной от первой, вычислительной системе (хосте) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя). Целью является максимально точное воспроизведение поведения в отличие от разных форм компьютерного моделирования, в которых имитируется поведение некоторой абстрактной модели (Википедия).
Эмулятор - виртуальное мобильное устройство, которое запускается на компьютере. При помощи эмулятора можно разрабатывать и тестировать приложения без использования реальных устройств. На рисунке 1.7 приведен пример запущенного стандартного эмулятора. Подробно работа с эмуляторами рассмотрена в лабораторной работе.
К достоинствам использования эмуляторов можно отнести простоту их использования и нулевую стоимость. Разработчику не нужно покупать огромное количество устройств с различными характеристиками, чтобы проверить работоспособность приложения на различных смартфонах. Достаточно создать несколько эмуляторов с требуемыми характеристиками и запустить на них приложение.
К сожалению, эмуляторы имеют и ряд недостатков:
Требуют много системных ресурсов.
Из-за различий в архитектуре процессоров компьютера и смартфона медленно запускаются. Современные персональные компьютеры построены на архитектурах x86 и x64, а большинство процессоров смартфонов на Android - ARM. Процесс эмуляции одной архитектуры на другой чрезвычайно сложен и происходит довольно медленно.
В некоторых случаях стандартного эмулятора недостаточно. Речь идет о возможностях смартфонов, которыми обычные компьютеры не обладают (например, наличие датчика gps или акселерометра). В таких случаях полноценную отладку можно провести только с использованием реального устройства.
Альтернативные эмуляторы
Стандартный эмулятор, поставляемый вместе с Android SDK, не устраивает многих. Существуют проекты, поддерживающие разработку и развитие альтернативных эмуляторов. В качестве примера можно привести Genymotion (см. рис. 1.8) - быстрый эмулятор Android (по мнению его разработчиков). Он содержит предварительно настроенные образы Android (x86 с аппаратным ускорением OpenGL). Genymotion доступен для Linux, Windows и Mac OS X и требует для своей работы VirtualBox. Иными словами, Genymotion представляет собой виртуальную машину с установленной ОС Android, которую пользователь запускает так же, как и другие виртуальные машины. Проблема высокого потребления системных ресурсов, конечно, не исчезает, однако скорость запуска существенно увеличивается.
В настоящее время активно развивается.
22. Возможности отладки на реальных устройствах
Разработанное приложение можно запустить на реальном устройстве, например, на смартфоне. Для этого необходимо проделать предварительную работу.
Для запуска приложений, разработанных в Android IDE, необходимо:
· Настроить устройство (включить режим отладки по USB).
· Настроить компьютер (для Windows необходимо установить нужный драйвер вручную, нужны права администратора).
· Настроить среду и запустить проект на устройстве.
Мониторинг состояния телефона DDMS (Dalvik Debug Monitor Service)
Вся информация о состоянии телефона доступна через специальный инструмент, называемый мониторинговым сервисом отладки DDMS (Dalvik Debug Monitor Service). Для его запуска щелкните кнопку с изображением андроида в верхнем правом углу Eclipse.
Окно DDMS состоит из нескольких панелей. На панели Devices отображается список доступных эмуляторов и подключенных телефонов. Здесь же приводится список запущенных в данный момент процессов. Каждый процесс запускается в собственной виртуальной машине. Потоки отображаются на отдельной вкладке Threads. Вкладка File Explorer предназначена для работы с файловой системой телефона. С ее помощью можно копировать файлы с компьютера на телефон и обратно. С помощью кнопки Screen Capture можно сделать скриншот экрана телефона. Кнопка с зеленым жуком позволяет присоединить отладчик к выбранному процессу. Для использования этой возможности необходимо иметь открытый исходный код этого процесса.