Spec-Zone.ru › Qt

Конфигурация файла манифеста Qt для Android

Файл манифеста Android — это XML-файл, необходимый для любого приложения Android. Он содержит конфигурацию приложения для различных настроек и функций, которые использует приложение, а также подробную информацию об самом приложении, например, имя пакета, имя приложения, версию и т. д. Разрешения и аппаратные возможности также могут быть установлены в манифесте.

Qt для Android поддерживает версию AndroidManifest.xml с конфигурацией по умолчанию, которая включает функции, разрешения и другие конфигурации, используемые системой сборки, необходимые для создания и запуска приложений Qt на Android.

Конфигурация проекта Qt для манифеста

Qt определяет некоторые метаданные, которые передаются системами сборки и в androiddeployqt, которые заполняют манифест правильными значениями без явного задания этих значений в файле манифеста. Таким метаданным присваивается значение в формате "-- %%INSERT_VALUE%% --", например:

<manifest ...
    android:versionCode="-- %%INSERT_VERSION_CODE%% --"
    ...
</manifest>

Это заполняется кодом версии, который задан, например, в CMake.

Конфигурация Qt по умолчанию

Qt по умолчанию устанавливает следующую конфигурацию манифеста:

Раздел Опция Описание
<manifest> package Устанавливает имя пакета. По умолчанию: org.qtproject.example.app_name.
android:installLocation Устанавливает место установки приложения, внутреннее или внешнее хранилище. По умолчанию: auto.
android:versionCode Устанавливает внутренний код версии. Заполняется из ANDROID_VERSION_CODE (qmake) и QT_ANDROID_VERSION_CODE (CMake). По умолчанию: 1.
android:versionName Устанавливает общедоступное имя версии. Заполняется из ANDROID_VERSION_NAME (qmake) и QT_ANDROID_VERSION_NAME (CMake). По умолчанию: 1.0.
<supports-screens> Устанавливает размеры экрана, которые поддерживает приложение, значения по умолчанию — anyDensity, largeScreens, normalScreens, и smallScreens.
<application> android:name Имя класса приложения. По умолчанию: org.qtproject.qt.android.bindings.QtApplication.
android:label Метка имени приложения. По умолчанию: имя целевого объекта проекта Qt.
android:extractNativeLibs Извлекает нативные библиотеки C++ при установке. По умолчанию: true.
android:hardwareAccelerated Устанавливает предпочтительное ускорение аппаратуры. По умолчанию: true.
android:requestLegacyExternalStorage Использовать ли хранилище Android с ограниченным доступом. По умолчанию true.
<activity> android:name Имя класса активности. По умолчанию: org.qtproject.qt.android.bindings.QtActivity.
android:label Метка имени активности. По умолчанию: имя целевого объекта проекта Qt.
android:configChanges Список изменений конфигурации, которые обрабатывает активность. По умолчанию: orientation, uiMode, screenLayout, screenSize, smallestScreenSize, layoutDirection, locale, fontScale, keyboard, keyboardHidden, navigation, mcc, mnc, density.
android:launchMode Метод запуска активности. По умолчанию: singleTop.
android:screenOrientation Ориентация дисплея активности на устройстве. По умолчанию: unspecified.
<intent-filter> Указывает типы намерений, на которые активность может реагировать. По умолчанию:
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>

Уникальные метаданные Qt

Помимо конфигурации манифеста по умолчанию, установленной Qt, Qt определяет некоторые метаданные, которые действительны только для приложений Qt. Такие метаданные обычно находятся в разделе <activity> в формате:

<meta-data
    android:name="meta-data-name"
    android:value="meta-data-value" />

Ниже приведен список таких метаданных, определенных Qt:

Имя метаданных Описание
android.app.lib_name Имя файла нативной библиотеки C++, используемой активностью.

Примечание: Этот атрибут обязателен и не должен удаляться. По умолчанию: имя целевого объекта проекта Qt.

android.app.extract_android_style Метод извлечения информации о стиле Android. Для получения дополнительной информации см. Извлечение стиля. По умолчанию: minimal.
android.app.background_running Устанавливает, поддерживает ли приложение задачи в фоновом режиме. Установка этого значения в true эквивалентна установке переменной окружения QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED в 0. По умолчанию: false.

Предупреждение: Установка этого значения в true может привести к непредвиденному сбою, если приложение пытается выполнить отрисовку после того, как сигнал QGuiApplication::applicationStateChanged() был отправлен с состоянием Qt::ApplicationSuspended.

android.app.arguments Устанавливает список аргументов для передачи в приложение "arg1 arg2". Заполняется из ANDROID_APPLICATION_ARGUMENTS (qmake) и QT_ANDROID_APPLICATION_ARGUMENTS (CMake). По умолчанию: не задано.
android.app.splash_screen_drawable_portrait Устанавливает изображение для экрана загрузки, специфичное для портретной ориентации. Например: android:resource="@drawable/splash_portrait". По умолчанию: не задано.
android.app.splash_screen_drawable_landscape Устанавливает изображение для экрана загрузки, специфичное для ландшафтной ориентации. Например: android:resource="@drawable/splash_landscape". По умолчанию: не задано.
android.app.splash_screen_drawable Устанавливает изображение для экрана загрузки в начале приложения.

Примечание: Сначала проверяются экраны загрузки, специфичные для ориентации. Если они не заданы, используется это значение. Например: android:resource="@drawable/splash". По умолчанию: не задано.

android.app.splash_screen_sticky Устанавливает, остается ли экран загрузки видимым до тех пор, пока приложение явно не скроет его с помощью QAndroidApplication::hideSplashScreen().
android.app.system_libs_prefix Указывает пользовательский путь к системной библиотеке для поиска библиотек. Это необходимо при запуске в качестве системного приложения. По умолчанию: /system/lib/.

Метаданные в сервисах

Некоторые атрибуты метаданных также могут использоваться в службах. Основные из них:

  • android.app.lib_name
  • android.app.background_running
  • android.app.arguments
  • android.app.system_libs_prefix

Разрешения и возможности Qt

Различные модули Qt могут потребовать некоторых разрешений или возможностей Android для правильной работы, например, разрешение на использование камеры в QtMultimedia. Инструмент androiddeployqt позаботится о включении таких требований в манифест Android во время сборки. Qt определяет следующие строки в манифесте, которые заменяются фактическими значениями:

<manifest ...
    <!-- %%INSERT_PERMISSIONS -->
    <!-- %%INSERT_FEATURES -->
    ...
</manifest>

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

Извлечение стиля

Qt использует различные методы для определения того, как должны быть стилизованы виджеты Qt и Qt Quick Controls:

  • default или full: при использовании Qt Widgets или Qt Quick Controls 1.

    Примечание: Этот метод использует некоторые нестандартные интерфейсы Android, которые ограничиваются и удаляются Google начиная с Android 9.0 (API 28). По этой причине он не рекомендуется для Android 9.0 и выше.

  • minimal: при использовании Qt Quick Controls 2 и отсутствии Qt Widgets или Qt Quick Controls 1. Это быстрее, чем использование опций по умолчанию или полных опций.
  • none: извлечение стиля отсутствует.

Файл манифеста Qt до версии 6.2

В версиях Qt, предшествующих 6.2, дополнительно определялся набор метаданных Qt. Эти атрибуты управляли зависимостями и некоторые из них использовались устаревшим сервисом Ministro. В Qt 6.2 они должны быть удалены. Вот список этих атрибутов:

  • android.app.qt_sources_resource_id
  • android.app.repository
  • android.app.bundled_libs_resource_id
  • android.app.bundle_local_qt_libs
  • android.app.use_local_qt_libs
  • android.app.libs_prefix
  • android.app.load_local_libs_resource_id
  • android.app.load_local_jars
  • android.app.static_init_classes
  • android.app.qt_libs_resource_id
  • android.app.ministro_not_found_msg
  • android.app.ministro_needed_msg
  • android.app.fatal_error_msg

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/android-manifest-file-configuration.html

Spec-Zone.ru

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