Qt汽车套件部署服务器
Qt汽车套件部署服务器是Qt汽车套件5.12中的新组件。以前,它被称为Neptune Appstore,用于演示目的。
此组件是一个轻量级HTTP服务器,为安装在网络上的Qt应用程序管理器实例的可用应用程序提供网络源。部署服务器的UI对应物是Neptune 3 UI中的下载应用程序。部署服务器和下载应用程序一起使您能够通过网络安装服务器上不同的应用程序。
这些组件的主要场景是在集成测试过程中安装应用程序。此外,这段代码还可以作为具有完整功能的参考实现,并为生产中的目标设备上新的下载应用程序。
部署服务器与Qt应用程序管理器中的应用程序安装器协同工作,作为http://和https://方案的系统资源。除了应用程序包外,部署服务器还托管有关每个包的元信息,这些信息由下载应用程序用于向用户选择提供可视化。这些元信息以Qt应用程序管理器包格式的标签和其他信息的形式存储在包标题中。当包上传到服务器时,解析包标题,将其与该包相关联,然后发送到下载应用程序,该应用程序查询可用应用程序的列表。使用此信息,下载应用程序可以向用户通知可用应用程序,甚至隐藏与目标安装不兼容的某些应用程序。以下图表示例说明了此安装场景。
部署服务器使用Python实现,基于Django,以下假设。
假设
- 应用程序以一组标识,包括应用程序ID、版本、架构和标签;这些组是唯一的。
- 架构指定为CPU架构、字节序、位数和操作系统的一组;如果一个包不包含与架构特定的部分,架构指定为所有。
- CPU架构基于QsysInfo::buildAbi()和QSysInfo::kernelType()的返回值,使用'-'连接。
- 安装目标会自动通过解析二进制文件确定。例如,检测到ELF二进制文件意味着它是Linux包;例如,armv8这样的CPU架构进一步定义了安装目标。有关更多详细信息,请参阅QSysInfo::kernelType()。
- 如果本地和非本地应用程序均符合选择标准,则优先选择本地应用程序。
- 可以通过标签进一步过滤应用程序,包括正(包括)和负(排除)过滤器。
- 标签被认为是字母数字的,可以包含小写拉丁字母、数字和下划线符号。传递给服务器的所有标签都转换为小写。
- 标签还可以有一个可选的版本。版本号用冒号(:)与标签分开。与标签类似,版本可以包含小写拉丁字母、数字和下划线符号。
- 标签按照版本进行匹配。例如,如果您请求“版本 5.12”,则与之匹配的是“5.12.0”,反之则不匹配。如果您请求一个不带版本的标签,则任何版本的标签都与您的请求匹配。
- 请求和包中的标签列表被简化。例如,“qt:5.12,qt:5.12.0”简化为“qt:5.12”。
- 尽管应用程序清单允许为应用程序分配任意数量的类别,但目前部署服务器只需要手动分配一个类别到应用程序。应用程序清单中的类别将被忽略。
- 标签信息从包头的extra和extraSigned部分以及tags数组中解析出来。该数组的所有元素都将添加到包的标签列表中。
- 每个包都有一个版本号。如果清单中没有版本字段,将分配默认版本“0.0.0”。
注意:为了创建有标签的包,可以使用appman-packager配合-m
参数,例如:
appman-packager create-package package.pkg package-tmp/apps/com.luxoft.alexa/ -m " {tags: ['platform:desktop']}" --verbose
此命令创建包并为其添加带有desktop
值的platform
标签。有关信息,请参阅Qt 应用程序管理器文档中的打包器部分。
参考资料和程序
©2020 Qt 公司有限公司。此文档中包含的文档贡献为其各自所有者的版权。本文档受自由软件基金会发布的GNU 自由文档许可协议版本 1.3条款许可。Qt 和相应的徽标是芬兰和/或世界各地的 Qt 公司的商标。所有其他商标均为各自所有者的财产。