Использование Genymotion Android Emulator вместе с Qt

Установка Genymotion

Genymotion — быстрый эмулятор Android, который включает в себя настроенные образы Android (x86 с аппаратным ускорением OpenGL), идеальный для тестирования приложения. Этот проект вырос из старого AndroidVM, и в сравнении с ним Genymotion имеет новый дизайн плеера, установщик и многое другое.

Genymotion доступен для Linux, Windows и Mac OS X и требует VirtualBox. Если у вас ещё не установлен VirtualBox, нет необходимости скачивать его отдельно, есть вариант инсталлятора с встроенным VB.

Стандартный эмулятор от Google работает очень медленно и умудряется тормозить даже на современных ПК с мощным «железом». Кроме того поддержка аппаратной виртуализации, которая хоть как-то ускоряет работу эмулятора, доступна только обладателям процессоров фирмы Intel. Для всех остальных наличие бубна и непреодолимого желания танцевать обязательно.

Если зайти на официальный сайт Genymotion, то найти бесплатную версию будет довольно не просто. Разработчики спрятали её в разделе, куда обычный пользователь зайдёт в последнюю очередь: пункт главного меню Help → Genymotion Desktop → Fun Zone (прямая ссылка).

После того, как вы нажмёте кнопку Download Genymotion Personal Edition вас попросят завести учётную запись. Процедура регистрации стандартная, с подтверждением через почтовый ящик. В поле Usage type рекомендуется выбрать Gaming (будет меньше полей для заполнения).

После окончания регистрации вы попадёте на экран загрузки (Рис. 1). Ниже доступны варианты для Linux и macOS.

Использование Genymotion Android Emulator вместе с Qt
Рис. 1 Экран загрузки

Выберите подходящий вариант, скачайте и установите эмулятор.

При первом запуске приложения вас попросят зайти в свою учётную запись, а также выбрать тип лицензии.

Использование Genymotion Android Emulator вместе с Qt
Рис. 2 Первый запуск

Интерфейс эмулятора прост и интуитивно понятен. В области справа перечисленный все установленные (сверху) и доступные для загрузки образы android устройств. Этот список содержит довольно много готовых шаблонов, но если вы не нашли подходящий, всегда можно добавить свою конфигурацию, при помощи кнопки расположенной в самом конце списка. Слева доступен набор фильтров, позволяющий оставить в списке только нужные устройства.

Использование Genymotion Android Emulator вместе с Qt
Рис. 3 Главное окно эмулятора

Выберите подходящий шаблон, нажмите на три вертикальные точки справа и выберите Install.

Использование Genymotion Android Emulator вместе с Qt
Рис. 4 Установка образа

Перед загрузкой образа вам предложат изменить некоторые параметры шаблона. Особое внимание стоит уделить пунктам Processor(s) и Memory size. Не стоит отдавать виртуальной машине больше половины ресурсов ПК, т.к. это может привести к тормозам хостовой ОС.

Использование Genymotion Android Emulator вместе с Qt
Рис. 5 Настройка перед загрузкой образа

После загрузки образ готов к работе. Средний размер каждого образа ~350 Мб.

Настраиваем проект для запуска в эмуляторе Genymotion

Все дальнейшие действия предполагают, что вы уже настроили Qt Creator для сборки приложений под android ОС.

Проверять работу эмулятора будем на стандартном примере Qt SCXML Calculator QML Example. Выберите его из списка и перейдите к настройкам проекта. Здесь необходимо выбрать комплект сборки под android.

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

Использование Genymotion Android Emulator вместе с Qt
Рис. 6 Каталог сборки

Ниже, в разделе Сборка, этапы, выберите ABI х86. Это связано с тем, что все виртуальные машины Genymotion используют эту архитектуру процессора. Если вы будете проводить отладку в других эмуляторах или на реальном устройстве, проверьте, что выбран соответствующий ABI (для реальных устройств чаще всего armeabi-v7a).

Использование Genymotion Android Emulator вместе с Qt
Рис. 7 Выбор ABI

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

Использование Genymotion Android Emulator вместе с Qt
Рис. 8 Выбор сборочный SDK

Внимание! У разных версий Qt разные ограничения на уровни поддерживаемых SDK. Эту информацию можно узнать на официальном сайте разработчиков. Qt 5.14 поддерживает SDK уровня 21 и выше. Это означает, что Qt 5.14 не позволит собрать приложение для устройств поддерживающих только API ниже 21 версии. В реальности, для Qt 5.14, рекомендуется выбирать SDK начиная с версии 24, т.к. несмотря на утверждение разработчиков о поддержке начиная с 21 версии, в процессе сборки, довольно часто, возникают ошибки.

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

В этом же разделе (Сборка Android SDK) в блоке Android нажмите кнопку Создать Шаблоны. Это позволит вам создать произвольно настраиваемый файл AndroidManifest.xml (и другие относящиеся к сборке), т.к. AndroidManifest.xml генерируемы Qt по умолчанию каждый раз пересоздаётся и если его отредактировать это не окажет влияния на проект. В открывшемся окне просто нажмите завершить.
Если вы запускали сборку проекта до того как выполнили вышеуказанные действия, Qt будет спрашивать разрешения перезаписать уже существующие файлы. Просто соглашайтесь.

Использование Genymotion Android Emulator вместе с Qt
Рис. 9 Создание шаблона

После этого перед вами откроется содержимое AndroidManifest.xml в виде формы с полями. Перейти к текстовому варианту можно при помощи кнопки Исходник XML вверху окна. Здесь, одним из важных пунктов, для нас является Минимальный требуемый SDK. Убедитесь, что уровень API установленный в этом поле не выше уровня API вашего эмулятора/устройства, в противном случае устройство может отказаться запускать/устанавливать приложение.

Использование Genymotion Android Emulator вместе с Qt
Рис. 10 AndroidManifest.xml

Сборка и отладка

Внимание! Перед сборкой/запуском/отладкой каждого нового android-приложения рекомендуется включить VPN, т.к. Qt Creator и система автоматической сборки Gradle могут попробовать докачать недостающие компоненты и зависимости, в том числе, и с подсанкционных гугловских серверов. В случае неудачи сборка завершится с ошибкой. Скаченные зависимости остаются в системе и не требуют повторного скачивания.

Если сейчас попробовать запустить приложение, то в списке доступных устройств эмуляторов Genymotion не будет. Поэтому перед началом отладки необходимо запустить требуемый эмулятор и дождаться полной его загрузки. Несмотря, на то, что Genymotion существенно быстрее стандартного Google эмулятора, загрузка может занять несколько минут. Как только эмулятор будет готов, вы увидите интерфейс как на обычном android устройстве. Справа расположены элементы управления эмулятором и различные индикаторы позволяющие, например: менять громкость, ориентацию, геопозицию, и т.д.

Использование Genymotion Android Emulator вместе с Qt
Рис. 11 Интерфейс эмулятора

Перейдите в Qt Creator и нажмите кнопку запуска (зелёный треугольник). В результате откроется окно со списком всех доступных устройств и эмуляторов. Выберите нужный и нажмите OK.

Использование Genymotion Android Emulator вместе с Qt
Рис. 12 Выбор устройства

После завершения сборки приложение автоматически установится и запустится на эмуляторе. В дальнейшем можно будет запускать это приложение из общего списка установленных, даже без Qt Creator. Все изменения сделанные в эмуляторе и установленные приложения сохранятся даже после перезапуска. Если нужно вернуть эмулятор к начальному состоянию это можно сделать с помощью пункта меню Factory reset выбрав нужный эмулятор из списка.

Использование Genymotion Android Emulator вместе с Qt
Рис. 13 Развёрнутое приложение

Все сообщения посылаемые приложением будут видны в Qt Creator на вкладке Вывод приложения.

Использование Genymotion Android Emulator вместе с Qt
Рис. 14 Вывод приложения

Несмотря на то, что приложение устанавливается на эмулятор, удалять его не нужно, оно автоматически переустановиться при следующем запуске отладки.

Scroll Up