Конфигурация файла манифеста 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.Предупреждение: Установка этого значения в |
| 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.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