清单定义(5.14之前)

注意:此页面描述了旧版元数据格式(am-application,版本 1),它在5.14之前使用。有关当前格式,请参阅此处。5.14应用程序管理器仍可解析旧格式,但不再支持别名清单

概述

应用程序清单或元数据文件,info.yaml,是一个遵循相同规则的YAML文件,与应用程序管理器中使用的所有其他YAML文件相同。

虽然应用程序管理器可以支持其他文件格式,例如XML,但目前实现的唯一元数据加载器基于YAML。

动态安装的应用程序由一个单info.yaml文件描述,位于其根目录中。作为系统UI一部分分发的内置应用程序可以选择具有多个别名。此行为类似于Microsoft Windows快捷方式,您可以使用不同的图标、名称和命令行参数启动相同的程序。这些文件必须在与应用程序基本info.yaml文件相同的位置,并需要命名为info-<descriptive name>.yaml。有关这些别名清单的描述,请参阅以下内容

基本清单

这是一个完整的info.yaml文件示例,同时展示了您如何在YAML 1.1文档中混合经典YAML和JSON样式

%YAML 1.1
---
formatVersion: 1
formatType: am-application
---
id: 'com.pelagicore.radio'
icon: 'FM-Radio.png'
name:
  en: "FM Radio"
  de: "UKW-Rundfunk"
code: "radio.qml"

runtime: qml
runtimeParameters: { quitTime: 100 }
documentUrl: "fm"

mimeTypes: [ "x-scheme-handler/x-radio" ]

capabilities:
- cameraAccess
- locationAccess

version: '1.2.1-alpha3'

info.yaml文件头部(第一个YAML文档)中的字段如下

字段名称类型描述
formatVersionint必需。目前始终为1
formatType字符串必需。始终为am-application

info.yaml清单数据(第二个YAML文档)中的字段如下

字段名称类型描述
id字符串一个表示为字符串且长度不超过150个字符的应用程序的唯一ID。此ID可用于在ApplicationModel QML类型中查找有关应用程序的信息。由于此ID在文件系统中使用,只能允许使用打印ASCII字符的子集:0-9a-zA-Z以及任何!#$%&'`^~_+-=.,;()[]{}字符。如果您正在构建包含第三方应用程序的较大系统,使用反向DNS表示法为应用程序ID是一种良好的习惯,这有助于在长期跟踪您的ID。助手函数PackageManager::validateDnsName可以帮助您从中控UI强制执行此策略。
icon字符串必需。图标的文件名。文件必须在与info.yaml相同的目录中,并且可以是Qt支持的任何图像格式。
name对象 必需。一个包含语言(string)到名称(string)映射的对象。语言标识符需要符合 POSIX 地区设置的规范。更多信息,请参阅 QLocale。至少需要一个映射。但是,提供 English(en)映射是一个好的实践,作为备选方案。
代码字符串必需。主要可执行文件 - 由 runtime 解析。
类别list<string>应与应用程序关联的类别名称列表。这主要用于自动上传应用到应用商店以及在系统中显示固定集合的类别。
runtime字符串必需。一个运行时 ID,引用运行时插件。目前,支持 qmlqml-inprocessnative

对于 QML 运行时,code 字段需要指向主 QML 文件,该文件应该有一个 ApplicationManagerWindow 作为根项。

对于本地运行时,code 字段可以指向一个任意的可执行文件,通过 QProcess::start() 执行。应用程序管理器将以环境变量 QT_QPA_PLATFORM 设置为 wayland 来运行应用程序。

注意:应用程序应被视为有效的 Wayland 客户端。

runtimeParametersobject此对象可以包含 runtime 特定参数 - 这些参数由应用程序管理器直接下传到运行时插件。

有关完整列表,请参阅 运行时参数

environmentVariablesobject已弃用;已移动到 运行时参数
documentUrl字符串作为可选的默认文档 URL,如果应用程序未指定文档 URL 则使用(请参阅 ApplicationManager::startApplication)。
supportsApplicationInterfacebool如果设置为 true,则应用程序必须实现 ApplicationInterface API。在这种情况下,应用程序管理器将等待应用程序连接到 P2P D-Bus 上的 ApplicationInterface,直到将其标记为“正在运行”。对于支持快速启动的运行时(如 qml 运行时),这不是必需的,因为它默认为 true。否则,默认为 false
mimeTypeslist<string> 一个可选的 MIME 类型数组,应用程序可以处理。应用程序管理器支持经典文件名或内容到 MIME 类型的匹配,以及 URL 方案的匹配。有关更多信息,请参阅 ApplicationManager::openUrl
capabilitieslist<string>一个可选的平台特定特殊访问权限列表,用于应用程序。将来,中间件可以通过应用程序管理器查询这些功能并验证它们。

注意:应用程序管理器本身不会附着任何意义到此字符串列表。相反,应用程序管理器在(数字签名的)应用程序清单和(客户特定的)中间件之间充当受托人;此中间件可能需要有关其与应用程序通信的更多信息和应用程序管理器可以作为受信任的源应用程序 能力

版本字符串应用程序版本作为字符串。
openglobject您可以选择指定所需的 OpenGL 版本和/或配置文件。更多信息,请参阅 OpenGL 规范

注意:在主应用程序管理器配置中指定与默认OpenGL配置不同的OpenGL配置,将禁用对此应用程序使用快速启动机制。

applicationPropertiesobject将用户定义的属性(键/值对)导出到应用程序和系统UI中。实际属性必须列在 privateprotected 访问控制标签下;其他属性被忽略。这些属性作为 ApplicationManager::application() 向系统UI暴露,作为 ApplicationInterface::applicationProperties 向QML应用程序暴露。
  • 应用程序可以访问私有和受保护的属性。私有密钥将覆盖相同名称的受保护密钥。
  • 系统UI只能访问受保护的属性。

虽然属性被转换为 QVariantMaps,但应用程序管理器不会以任何方式解释它们。

logging/dlt/id字符串如果提供了此值,则用作汽车DLT应用程序ID。ID限制为四个字符,额外的字符将被丢弃。如果没有提供ID,则默认为'A'后跟三位应用程序号码。

注意:对于QML运行时,ID从一开始就为"PCLQ",直到按描述更改它。

logging/dlt/description字符串如果提供了此值,则用作汽车DLT应用程序描述,允许通过更详细的描述来增强简短的DLT应用程序ID。如果没有明确提供,则使用默认描述。
importancereal已弃用。请使用 applicationProperties 代替。
backgroundMode字符串已弃用。请使用 applicationProperties 代替。

runtimeParameters 对运行时特定,因此下表还有一个额外的列,指出哪个配置选项适用于哪个运行时

名称运行时类型描述
loadDummyDataqml, qml-in-processbool已弃用。自动为应用程序加载模拟数据,使用与Qt的 qmlsceneqml 工具相同的算法。默认情况下不加载模拟数据。
importPathsqml, qml-in-processlist<string>要添加到QML引擎导入路径的路径列表。此参数的使用相当于为从命令行启动的程序设置 QML2_IMPORT_PATH
resourcesqml, qml-in-processlist<string>接受Qt资源文件(.rcc)或已编译资源的库的列表,并在应用程序进程中注册它们。可以使用":"或"qrc://"文件路径前缀访问资源。
pluginPathsqml, qml-in-processlist<string>要添加到Qt库路径的路径列表,用于查找插件。此参数的使用相当于为从命令行启动的程序设置 QT_PLUGIN_PATH
argumentsnativelist<string>当启动应用程序的可执行文件时使用的命令行参数列表。
environmentVariablesnative, qmlobject一个简单的字符串到字符串映射,描述在生成运行时进程时应设置的的环境变量。您可以通过将其设置为 null 来从默认环境变量中删除一个变量。

注意:此功能仅适用于开发和演示,因为它具有以下限制和副作用

  • 如果您启用安全检查运行应用程序管理器,则这些变量将被完全忽略。
  • 设置这些变量将禁用对此应用程序使用快速启动机制。

别名Manifests

注意:此页面描述了旧版元数据格式(am-application,版本 1),它在5.14之前使用。有关当前格式,请参阅此处。5.14应用程序管理器仍可解析旧格式,但不再支持别名清单

这是Basic Manifest中info.yaml文件的别名Manifest的一个示例,info-am.yaml。这样,您就可以运行单个调谐应用程序 radio.qml,该程序可以通过应用启动器中的两个不同的条目启动,这两个条目有不同的文本和图标。

%YAML 1.1
---
formatVersion: 1
formatType: am-application-alias
---
aliasId: 'com.pelagicore.radio@am'
icon: 'AM-Radio.png'
name:
  en: "AM Radio"
  de: "Langwellenrundfunk"

documentUrl: "x-radio://am"

如果您在应用程序已经运行的情况下启动别名,它不会启动另一个实例。只有当设置了 documentUrl,当前运行的实例才会收到包含通过 documentUrl 参数设置的相应字符串的 ApplicationInterface::openDocument 信号。然后,应用可以根据此自动更改UI界面。别名实例需要与应用程序的 info.yaml 文件在同一个文件夹中,并且必须命名为 info-<描述性名称>.yaml

info-am.yaml 文件头部(第一个YAML文档)的字段含义如下:

字段名称类型描述
formatVersionint必需。目前始终为1
formatType字符串必需。始终为 am-application-alias

别名实例数据(第二个YAML文档)字段的意义如下:

字段名称类型描述
aliasId字符串必需。基础应用的唯一ID,后跟 @ 符号和此别名的唯一标签。此标签与主应用ID有相同的字符限制。参见 基本实例 中的 id 字段。
icon字符串必需。参见 基本实例 中的 icon 字段。
nameobject必需。参见 基本实例 中的 name 字段。
documentUrl字符串参见 基本实例 中的 documentUrl

© 2024 The Qt Company Ltd. 本文件中的文档贡献受各自所有者的版权保护。提供的文档受自由软件基金会发布的 GNU自由文档许可证1.3版本 的条款约束。Qt及其相关标志为芬兰以及世界其他地区的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。