Мой подход к организации проекта QtQuick & C++ в Qt 5.1 for Android.

Продолжаю рассматривать программирование на Qt 5.1 под Android. Сейчас опишу свой доход к составлению и введению проекта.

Обычно для Desktop приложений использую CMake в качестве системы сборки своих приложений. Вместе с Qt 5 поставляется новый набор CMake скриптов, которые довольно сильно отличаются от  CMake модуля FindQt4 поставляемым вместе с CMake. Для этого потребуется настроить cmake на работу с toolchain что идет с Andoid NDK, благо есть проект Android-cmake облегчающий этот процесс.

Все хорошо, только в Andoid нельзя запускать бинарник. Там необходима Java  прослойка, так же нужна прослойка, для организации цикла обмена событий от системы в наше Qt приложение. Кому интересно может посмотреть видео Targeting Android with Qt

В общем простого способа использовать CMake, для разработки не нашел. Пришлось использовать скрипты qmake.

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


selectTemplate

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


selectToolchain
ни, т.к. загрузка пакета требует времени.

Что мы имеем?

  1. код viewer’а  QML с предварительными настройками;
  2. привычный main.cpp создающий viewer и передающий путь к qml;
  3. main.qml код на qml.

template

При смене комплекта для Android появляется катало android со следующим содержимым:

  1. res каталог описания ресурсов, с описание Menistro и включаемых либ;
  2. src исходники Java прослойки. Jar файлы можно увидеть к примеру в Qt5.1.0\5.1.0\android_armv7\jar;
  3. манифест и версия, подробнее смотрите материалы по разработке приложений по андройд.

androidFolder

Но это еще не все! Каталог android используется при создание apk пакета. Создание пакета происходит во время запуска(Ctr+R), после чего пакет устанавливается на устройство или эмулятор и выполняется запуск удаленного процесса.

Во время запуска в каталоге android появятся подкаталоги: assest, bin, gen, libs.

На заметку!!!  в assest положиться весь наш каталог qml.

Моя организация проекта:

  1. components каталог сходных кодов кастомных компонентов на C++;
  2. registryTypes.cpp вынесена вся регистрация кастомных компонентов;
  3. Components кастомные компоненты на QML, для повторного использования;
  4. Интерфейс представляю в виде набора страниц, которая в свою очередь может состоять из множества специфических для данной страницы qml компонентов, все это храниться в каталоге с названием xxxPage
  5. mai.qml компоновка страниц и налаживание возможных связей между ними;
  6. constats.js перечисление констант таких как: общий цвет фона, размеры главного окна и т.д.

myProject