Skip to content

Latest commit

 

History

History
101 lines (59 loc) · 9.1 KB

qtinstall.md

File metadata and controls

101 lines (59 loc) · 9.1 KB

Термины

Qt Creator - среда разработки. Qt - Framework для разработки приложений под разные платформы, включая Android и iOS. QML = Qt Markup Language.

QML позволяет использовать JavaScript для разработки логики управления пользовательским интерфейсом. QML – declarative language. В рамках Qt QML используется для описания пользовательского интерфейса, а C++ для разработки тяжёлых задач. Qt Quick – это QML + JavaScript.

Установка Qt и Qt Creator

Стартовая страница: https://www.qt.io. Страница загрузки: https://www.qt.io/download

Для того, чтобы иметь возможность собирать приложения для Android, следует установить JDK, Android SDK и NDL.

Установка JDK

Начать подготовку стенда сборки необходимо с установки Java SE Development Kit (JDK): http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Проверить успешность установки JDK можно командой: java -version

После успешной установки JDK имеет смысл добавить путь к исполняемыми файлам Java в «Path» (Переменные среды исполнения). Например: C:\Program Files\Java\jdk1.8.0_191\bin

Современные Android-приложения представляют собой смесь bytecode JVM и native-кода целевой платформы (x86, либо ARM). Bytecode JVM генерируется, преимущественно, из кода на Java. Виртуальная машина JAVA (JVM) устанавливается вместе c Java Runtime (JRE), а компиляторы с Java, а также – дополнительный инструментарий, устанавливаются посредством JDK. Основная причина использования JDK: инструментальные средства, используемые при создании package с Android-приложения, а также JVM для работы систем сборки (в частности, для Gradle нужна JVM, т.к. этот инструмент написан на Java).

Установка Android Studio

Инсталлятор Android Studio доступен здесь: https://developer.android.com/studio/

В Android Studio это не только IDE, но и набор инструментария, из которых наиболее важными являются:

  1. Средства установки Android SDK и NDK
  2. Эмуляторы мобильных устройств
  3. Gradle - система сборки (apk-файлов из bundle)

Android Studio устанавливается сразу с последним SDK, который отключить нельзя.

При установке SDK и NDK разумно выбрать простое имя корневого каталога, БЕЗ ПРОБЕЛОВ, например: c:/Android_SDK и c:/Android_SDK/ndk-bundle. Наличие пробелов в пути приводит к тому, что сборка фатально разваливается.

При тестировании кода, преимущественно, используются эмуляторы на базе архитектуры x86, т.е. они работают на порядок быстрее (официальная оценка Google), чем эмуляторы мобильных устройств на базе ARM-процессоров.

SDK Platforms различаются по API Level и, чаще всего, номер API Level связан к официальной версией Android. Например, API Level 23 – означает Android 6.0 “Marshmallow”. При работе с утилитами командной строки, чаще всего используется именно этот номер. На персональном компьютере может быть установлено несколько разных SDK Platforms.

Установка Qt Creator и Qt

Существует как платная версия Qt, так и бесплатная Community Edition. Для получения любой из версий необходимо выполнить регистрацию учётной записи разработчика.

Официальная статья по настройке окружения: http://doc.qt.io/qt-5/androidgs.html

При установке Qt необходимо крайне внимательно изучить диалог "Выбор компонентов". Если принять варинаты выбора по умолчанию, может быть установлено компонентов на 40-60 Гб.

Проблемы с работоспособностью инструментария

Автоматическая настройка toolchain

При установке Qt Creator запускается скрипт автоматического поиска конфигураций toolchains - наборов компиляторов для сборки Native-кода. Если нужные toolchain найти не удалось, настройку придётся сделать вручную, что гарантированно занимает много времени и редко заканчивается успехом. Проблема совместимости Qt и NDK действительно значимая.

Поиск доступных toolchains в автоматическом режиме возможен при использовании setup-toolchains. Пример вызова:

qbs setup-toolchains --detect

Подробнее о qbs: https://download.qt.io/official_releases/qbs/. Также доступен подобный инструмент для поиска toolchains для Android.

Не забывать указывать корректный ABI

При сборке проектов, которые долго не изменялись, возможны ошибки, связанные с указанием некорректного ABI. Так, например, приложение могло разрабатываться с использованием Android-эмулятора для архитектуры процессора x86, что обеспечивает высокую скорость работы приложения. При этом сборка этого приложения под архитектуру ARM может завершиться ошибкой. Несовместимость может появиться из-за неаккуратной настройки pro-файлов. В приведённом ниже примере, часть кода собирается только при использовании ABI для x86:

contains(ANDROID_TARGET_ARCH,x86) {
    ANDROID_PACKAGE_SOURCE_DIR = \
        $$PWD/android
}

Потеря совместимости при смене минорной версии

При смене минорной версию на более современную могут возникнуть ошибки сборки. Например, при переходе с Qt 5.12 на 5.15 мне пришлось изменить структуру "AndroidManifest.xml". Статья, которая помогла устранить проблему сбоя: https://stackoverflow.com/questions/61097966/qt-on-android-runtime-error-invalid-package-identifier-when-getting-bag-for-res

Также авторы Qt Framework периодически пересматривают правила оформления кода. Так, например, в Qt 5.12 прикрасно работал следующий код:

connect(networkReply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
        this, &MyQmlProxyClass::networkReplyError);

В 5.15 этот код уже не собирается (Deprecated) и его нужно заменить на следующий (более ясный и компактный):

connect(networkReply, &QNetworkReply::errorOccurred, this, &MyQmlProxyClass::networkReplyError);

Дополнительные материалы

Бесплатная книга о QML: http://qmlbook.github.io/

Бесплатный курс по разработке приложений для Android: https://www.udacity.com/course/new-android-fundamentals--ud851

Облачный эмулятор Android (высокопроизводительный и платный): https://www.genymotion.com/