Spec-Zone.ru › Qt 6.0

Заметки по платформе Android

Эта страница содержит информацию, специфичную для создания и запуска приложений Qt на Android. Qt поддерживает версии Android 6.0 (уровень API 23) и выше.

Разработка для Android в Qt Creator

Самый простой способ разработки приложений Qt для Android — использовать Qt Creator. При использовании Android Kit с проектом Qt Creator, он компилирует ваш код, а также некоторые специфичные для Android файлы, необходимые для включения Qt на Android и генерации пакета вашего приложения. Qt Creator добавляет эти файлы в подкаталог вашего проекта под названием android. Для получения дополнительной информации см. Шаблоны пакетов Android.

Пакет приложения

На Android приложения распространяются на устройства в виде пакетов APK. Для распространения приложений в Google Play используется другой формат AAB. Для получения дополнительной информации см. Публикация в Google Play.

Используйте Qt Creator для создания пакетов APK и AAB или создавайте их вручную. Для получения дополнительной информации см. Развёртывание приложения на Android.

Особенности плагинов и импортов

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

Особенности текста

Из-за ошибки в некоторых драйверах OpenGL механизм, используемый Qt для кэширования глифов текста, не работает должным образом на всех устройствах Android, что приводит к искажению текста. Для решения этой проблемы предусмотрено решение, но оно может увеличить потребление памяти и повлиять на производительность рендеринга текста. Это решение используется по умолчанию на всех устройствах.

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

Особенности OpenGL

Современные устройства часто поддерживают OpenGL ES 3.0 или 3.1 в дополнение к 2.0. Чтобы получить подходящий контекст OpenGL, установите запрашиваемую версию с помощью QSurfaceFormat::setVersion().

Примечание: Заголовочные файлы, такие как gl31.h, доступны только в последних уровнях API, поэтому вам необходимо установить целевой уровень API 21. Также имейте в виду, что использование функций OpenGL ES 3.x приведёт к работе приложения на более старых устройствах, которые поддерживают только 2.0.

Система файлов ресурсов

Qt для Android предоставляет специальную виртуальную файловую систему, основанную на механизме Android Assets. Файлы, помещённые в каталог (ANDROID_PACKAGE_SOURCE_DIR/assets/), упаковываются в ваш пакет приложения. Доступ к ним в Qt осуществляется путём добавления префикса assets:/ к путям. Для получения дополнительной информации см. Перевод приложений Qt на Android.

Поддерживаемые архитектуры Android

Qt для Android в настоящее время имеет двоичные файлы для armv7a, arm64-v8a, x86 и x86-64.

Если вы хотите поддерживать несколько различных ABI в своём приложении в Google Play, рекомендуется создать пакет приложения (AAB), содержащий двоичные файлы для каждой из ABI. Основываясь на вашем AAB, Google Play генерирует оптимизированные пакеты приложений (APK) для каждого устройства, запрашивающего загрузку.

Для получения дополнительной информации см. Создание приложения Android.

Известные проблемы

Из-за ошибки на некоторых устройствах при отключении предсказательной вставки текста с помощью ImhNoPredictiveText, это свойство игнорируется, и предсказательная вставка текста по-прежнему включена. Для решения этой проблемы установите переменную среды QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT в значение 1. Однако одним из побочных эффектов является то, что эта переменная среды может вызвать проблему с другими клавиатурами, такими как Gboard. Если вы используете язык, такой как японский, с Gboard, отображается только клавиатура QWERTY. Эта переменная среды запрашивается каждый раз при отображении клавиатуры, поэтому можно переключать обходное решение по мере необходимости.

Ограничения

Некоторые модули Qt могут иметь функции, которые не поддерживаются на Android или имеют ограничения. Для получения дополнительной информации см. QTBUG-72086.

Часто задаваемые вопросы

  • Стоит ли использовать QtActivity или Android Activity для создания настраиваемой Activity?

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

  • Стоит ли использовать QtService или Android Service?

    Здесь действует тот же принцип, что и для QtActivity. Если вы не используете функции, требующие загрузки библиотек Qt, такие как системные вызовы.

  • Можно ли использовать Android Fragments с Qt? Какой аналог Fragment есть в Qt?

    Android Fragments нельзя использовать с Qt. Однако Qt предлагает собственные модульные компоненты и представления с QML. Вы можете комбинировать несколько компонентов в одном представлении QML. Для получения дополнительной информации см. Qt QML.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/android-platform-notes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API