清单定义(5.14之前)

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

概述

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

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

动态安装的应用由单个info.yaml文件描述,位于其根目录中。作为系统UI的一部分分发的内置应用可以可选地有多个别名。这种行为类似于Microsoft Windows快捷方式,您可以使用不同的图标、名称和命令行参数启动相同的程序。这些文件必须与应用的基本info.yaml文件相同的文件夹中,并且需要命名为info-<描述性名称>.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: { loadDummyData: true }
documentUrl: "fm"

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

capabilities:
- cameraAccess
- locationAccess

version: '1.2.1-alpha3'

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

字段名称类型描述
formatVersionint必需。当前始终为1
formatTypestring必需。始终为am-application

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

字段名称类型描述
idstring一个应用的唯一标识符,表示为最大长度为150个字符的字符串。此ID可用于在ApplicationModel QML类型中查找有关应用的信息。由于此ID用于文件系统,因此只能允许打印ASCII字符子集:0-9a-zA-Z以及任何!#$%&.shortnameAP&'`^~_+-=.,;()[]{}。如果您正在构建一个包含第三方应用的大系统,则使用反向DNS命名法对于应用ID是一种好做法,这有助于在长时间运行中跟踪您的ID。辅助函数ApplicationInstaller::validateDnsName可以帮助您在System UI中实施此策略。
iconstring必需。图标的文件名。该文件必须位于与info.yaml相同的目录中,并且可以是Qt支持的任何图像格式。
name object必需。一个对象,包含语言(string)到显示名称(string)的映射。语言标识符需要遵循标准POSIX区域定义。有关更多信息,请参阅QLocale。至少需要存在一个映射。然而,提供英语(en)映射作为后备是一种好做法。
codestring必需。主可执行文件 - 由 runtime 解释。
categoriesarray<string>应用程序应关联的一组类别名称列表。这主要用于自动化应用市场上传以及在系统UI中显示为固定的类别集。
runtimestring必需. 运行时ID,引用运行时插件。目前支持qmlqml-inprocessnative

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

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

注意:预期应用程序是一个有效的Wayland客户端。

runtimeParametersobject此对象可以包含runtime特定参数——这些参数由应用管理器直接传递给运行时插件。

有关完整的详细信息,请参阅运行时参数

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

注意:应用管理器本身不会给此字符串列表赋予任何意义。相反,应用管理器作为(数字签名)应用清单和(客户特定)中间件之间的管理者;这种中间件可能需要更多关于其通信的应用程序的信息,而应用管理器可以作为应用功能的受信任来源。

versionstring应用程序版本,以字符串形式表示。
openglobject让您可以指定所需的OpenGL版本和/或配置文件。有关更多信息,请参阅OpenGL规范

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

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

虽然在转换成QVariantMaps时将属性转换,但应用管理器不会以任何方式解释它们。

logging/dlt/idstring如果提供了,此值用作汽车 DLT 应用程序 ID。ID 限制为四个字符,其他字符将被丢弃。如果没有提供 ID,则默认为以 'A' 开头,后跟三位应用程序编号。

注意:对于 QML 运行时,ID 从应用程序过程的开始即是 "PCLQ",直到您按照描述更改它。

logging/dlt/descriptionstring如果提供,它将用作汽车 DLT 应用程序描述,允许通过更详细的描述来增强 DLT 应用程序 ID。如果没有显式提供,则使用默认描述。
重要性真实已过时。请使用 applicationProperties 替代。
后台模式string已过时。请使用 applicationProperties 替代。

运行时参数是特定于运行时的,因此下面的表中还有一个额外的列,指定配置选项应用于哪个运行时。

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

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

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

别名清单

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

这是一个别名清单的示例,info-am.yaml,用于 基本清单 中的 info.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
formatTypestring必需。总是 am-application-alias

别名清单数据(第二个 YAML 文档)中字段的含义如下:

字段名称类型描述
aliasIdstring必需。基本应用的唯一ID,后跟@符号和此别名的唯一标记。此标记具有与主要应用ID相同的字符限制。请参阅基本清单中的id字段。
iconstring必需。请参阅基本清单中的icon字段。
名称object必需。请参阅基本清单中的name字段。
documentUrlstring请参阅基本清单中的documentUrl

©2019 Luxoft Sweden AB。本文档中包含的贡献是各自所有者的版权。提供的文档根据自由软件基金会发布的GNU自由文档许可证1.3版本的条款进行许可。Qt及其相关徽标是芬兰Qt公司以及在全世界其他国家的商标。所有其他商标均为其各自所有者的财产。