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。警告:此字段已弃用,并移至  | 
| 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:hardwareAccelerated | 设置硬件加速偏好。默认值是 true。 | |
| android:requestLegacyExternalStorage | 是否使用Android作用域存储。默认值是 true。 | |
| android:allowBackup | 是否允许应用程序参与备份和还原基础架构。如果设置为 false,则永远不会对应用程序执行备份或还原。默认值是true。 | |
| android:fullBackupOnly | 是否在设备上使用自动备份(如果可用)。默认值是 false。 | |
| <activity> | android:name | 活动类的名称。默认值是 org.qtproject.qt.android.bindings.QtActivity。 | 
| 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"/> | |
| 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。警告:将其设置为 | 
| 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.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公司有限公司的商标。所有其他商标归其各自所有者所有。