Qt Android Manifest 文件配置

Android Manifest 是任何 Android 应用都必须的 XML 文件。它包含应用使用的不同设置和功能的配置,以及关于应用本身的一些细节,例如,包名、应用名、版本等。也可以在配置中设置权限和硬件功能。

Qt for Android 保持一个具有默认配置的 AndroidManifest.xml 文件版本,这些配置包括构建系统需要用于在 Android 上构建和运行 Qt 应用所需的功能、权限和其他配置。

Qt 项目到 Manifest 配置

Qt 定义了一些 元数据,这些数据由构建系统传递给 androiddeployqt,以填充正确的值,而无需在配置文件中明确设置这些值。这种 元数据 赋予的值形式为 "-- %%INSERT_VALUE%% --",例如

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

这将是通过,例如,CMake 设置的版本码填充。

Qt 默认配置

Qt 默认设置以下配置文件配置

部分选项描述
<manifest>package设置包名。默认值是 org.qtproject.example.app_name

警告:此字段已弃用,并移至 build.gradle。它将在未来的发布版中删除。

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>设置应用支持的屏幕尺寸,默认值是 anyDensitylargeScreensnormalScreenssmallScreens
<application>android:name应用程序类名称。默认值是 org.qtproject.qt.android.bindings.QtApplication
android:label应用程序名称标签。默认值是 Qt 项目的目标名称。
android:hardwareAccelerated设置硬件加速偏好。默认值是 true
android:requestLegacyExternalStorage是否使用Android作用域存储。默认值是true
android:allowBackup是否允许应用程序参与备份和还原基础架构。如果设置为false,则永远不会对应用程序执行备份或还原。默认值是true
android:fullBackupOnly是否在设备上使用自动备份(如果可用)。默认值是false
<activity>android:name活动类的名称。默认值是org.qtproject.qt.android.bindings.QtActivity
android:configChanges列出活动处理配置更改的内容。默认值是orientationuiModescreenLayoutscreenSizesmallestScreenSizelayoutDirectionlocalefontScalekeyboardkeyboardHiddennavigationmccmncdensity
android:launchMode用于启动活动的方发。默认值是singleTop
android:screenOrientation活动在设备上的显示方向。默认值是unspecified
<intent-filter>指定活动可以响应的意图类型。默认值是
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
android:exported设置是否允许其他应用程序的组件启动该活动。默认值是true

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.trace_location指定应用可以在设备上保存跟踪文件的位置。例如:/storage/emulated/0/Android/data/<app_package_name>/files/。在使用通用跟踪格式(CTF)跟踪后端时需要此。

注意:应用需要对该位置有存储权限。默认:未设置。

应用特定元数据

一些元数据属性是全局的,应放置在<application>部分下

元数据名称描述
android.app.system_libs_prefix 指定用于库加载查找的专用系统库路径。如果使用安装在应用默认本地(JNI)库目录之外的应用Qt库,则需要此路径。默认值是/system/lib/

服务中的元数据

一些元数据属性也可用于服务。主要的是

Qt权限和功能

不同的Qt模块可能需要一些Android权限或功能才能正常工作,例如,在QtMultimedia中使用的相机权限。androiddeployqt工具会在构建过程中负责将此类要求包含到Android清单中。Qt将以下行定义到清单中,它们将被实际的值替换

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

注意:如果从项目清单中删除这些行,Qt将无法包含正确的权限。因此,某些功能可能无法正常工作。

风格提取

Qt使用不同的方法来确定Qt小部件和Qt Quick控件应该如何进行样式设置

  • 默认完整:当使用Qt小部件或Qt Quick控件1时。

    注意:此方法使用一些Android非SDK接口,从Android 9.0(API 28)开始,谷歌已经开始限制和删除这些接口。因此,不建议在Android 9.0或更高版本中使用。

  • 最小:当使用Qt Quick控件2且没有Qt小部件或Qt Quick控件1时。比使用默认或完整选项更快。
  • :没有样式提取。

Qt 6.2版本之前的Qt清单

比Qt 6.2更早的Qt版本以前使用了一组由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应用清单

© 2024 Qt公司有限公司。此处包含的文档贡献的版权归其各自所有者所有。提供的文档受自由软件基金会发布的 GNU自由文档许可证第1.3版 的条款约束。Qt及其相关标志是芬兰以及全球其他国家的Qt公司有限公司的商标。所有其他商标归其各自所有者所有。