安装

支持的平台

应用程序管理器在多个平台上进行定期测试。

以下平台仅支持开发和测试目的。此外,这些平台仅允许应用程序管理器在单进程模式下运行

  • Windows
  • macOS
  • Android(应用程序管理器不能直接部署,但可以作为包含系统UI的Android APK包的一部分)

这些平台可用来进行开发和生产,并将允许您使用应用程序管理器完整的功能集

  • Linux桌面和嵌入单进程和多进程模式

    注意:在多进程模式下,由于Wayland驱动程序的不稳定性不同,仅支持IntelAMD(开源)和VMWare图形驱动程序。尽管其他驱动程序可能工作,但它们可能需要特定于GPU驱动程序的特定QtWayland版本或固件二进制。

先决条件

要构建具有所有功能的用户管理器,需要以下组件

  • Qt 6.5.0或更高版本。
  • libyaml 2.2或更高版本。
  • libarchive 3.5或更高版本-如果您需要安装功能

在基于Debian的系统上,该命令安装三个必需的包

apt-get install libyaml-dev libarchive-dev

注意:在没有pkg-config(例如,Windows或macOS)的平台上,以及缺少其中任何一个先决条件的平台上,将自动使用从src/3rdparty文件夹中的这些库捆绑的版本,而不是使用上述库。请注意,捆绑的第三方库将被作为静态库链接,因此必须了解许可协议的影响。此选项不是为生产环境,而是为开发和测试环境提供。

运行时要求

应用程序管理器使用的某些库没有直接链接,而是在运行时动态加载

  • openssl -仅限Linux,并且只有当您需要安装功能时。Qt需要带有openssl支持进行构建。所需的最低版本由Qt定义。
  • libdbus 1.12或更高版本 -如果您需要多进程模式或appman-controller支持。由于libdbus在Windows和macOS中尚未提供,应用程序管理器提供了自己的副本以支持appman-controller工具(Qt-Creator集成也使用此工具)。

多进程模式与单进程模式

默认情况下,应用程序管理器始终尝试构建在多进程模式下,但如果某些多进程模式依赖项不可用(例如),则会回退到单进程模式

  • 您正在为Linux构建。
  • QtWaylandCompositor模块可用。
  • QtDBus模块可用。

您可以通过对应的命令行选项 --force-multi-process 和 --force-single-process 来强制构建模式,具体操作见下文。

注意:当安装 QtWaylandCompositor 模块时,Qt 安装程序 不能 从您的 Linux 发行版中安装必要的 Wayland 开发包。这会导致在尝试构建应用程序管理器示例时出现难以阅读的 CMake 错误。
sudo apt install libwayland-dev zlib1g-dev(或非 Debian-based 发行版上的等效安装)将解决这个问题。

构建

应用程序管理器使用 CMake 进行其构建系统。基本安装步骤如下

mkdir <builddir>
  && cd <builddir>
  && cmake <srcdir> <options>
  && cmake --build .
  && cmake --install .

mkdir <builddir>
  && cd <builddir>
  && <qtbase>/bin/qt-configure-module <srcdir> <options>
  && cmake --build .
  && cmake --install .

编译后,所有可执行文件(包括单元测试),都可以在构建文件夹的 bin 目录中找到。

可以给 CMake 设置各种选项,以适应您的需求。

使用 Qt 的新 CMake 构建系统,为 Qt 模块设置配置选项有三种方法

  1. 您可以从 shell 中调用 cmake 并直接在 CMake 命令行上指定选项 -DINPUT_<options>=<value>
  2. 您还可以使用 cmake-gui 或 Qt Creator 内置的配置 UI 在第一次 CMake 运行后更改选项
  3. 在命令行上,还有 Qt 的便利 CMake 包装程序 qt-configure-module,它允许您像指定正常命令行选项一样指定选项:--<option>=<value>
选项描述
libarchive设置为 system 强制使用系统 libarchive 进行构建,或设置为 qt 不使用系统 libarchive 进行构建,即使检测到了也不要使用。
libyaml设置为 system 强制使用系统 libyaml 进行构建,或设置为 qt 不使用系统 libyaml 进行构建,即使检测到了也不要使用。
force-single-process强制进行单进程构建,即使 Qt 的 Wayland compositor 模块可用。
相应的 cmake 输入是 -DINPUT_force_mode=single
force-multi-process强制进行多进程构建 - 如果 Qt 的 Wayland compositor 模块不可用,这将导致问题。
相应的 cmake 输入是 -DINPUT_force_mode=multi
installer 设置为 no 禁用安装程序部分。
external-dbus-interfaces设置为 no 完全禁用外部 D-Bus 接口。应用程序和应用程序管理器之间的内部通信通道仍基于点对点 D-Bus。
tools-only设置为 yes 创建仅编译工具的构建(类似于 Qt 构建工具,仅适用于主机 Qt 的交叉编译):appman-packager
package-server设置为 no 禁用构建 appman-package-server 工具,设置为 yes 强制构建它。默认值取决于 QtHttpServer 模块的可用性。
widgets-support设置为 yes 启用对 Qt 小部件的支持。此选项可用于启用某些开发工具使用 Qt 小部件。
hardware-id=<id>如果设置了,将 id 编译为硬编码的硬件-id;有关更多信息,请参阅 硬件 ID
libbacktrace如果设置为,将启用在第三方文件夹中构建和链接libbacktrace。这将在Linux上的崩溃中提供可读的回溯,但也会略微增加二进制文件大小。对于调试构建,此选项默认启用。设置为将禁用构建和链接libbacktrace
stackwalker如果设置为,将启用在第三方文件夹中构建和链接stackwalker。这将在Windows上的崩溃中提供可读的回溯,但也会略微增加二进制文件大小。对于调试构建,此选项默认启用。设置为将禁用构建和链接stackwalker
libdbus仅限Windows和macOS:如果设置为,将启用从第三方文件夹构建libdbus-1。这允许您在Windows和macOS上使用appman-controller工具(该工具也由Qt-Creator集成使用)。此选项默认启用。设置为将禁用构建libdbus-1

硬件ID

应用程序管理器的安装程序部分需要一个唯一的设备ID,如果您想从您的应用商店提供绑定到特定设备单元的应用程序包。这里的用例是防止客户一次购买应用程序然后免费与他人共享。

由于应用程序管理器在构建时不了解潜在的商店如何配置,它尝试根据第一个配置的以太网设备的MAC地址创建一个唯一的ID。如果未配置以太网设备,或者在应用程序管理器启动后才进行配置,则此场景将无法工作。

指定硬件ID有三种不同的方式

  1. 没有配置选项:使用第一个以太网设备的MAC地址。通常,此选项可以立即使用。
  2. hardware-id=yourID将ID硬编码为yourID。此选项非常适合您不使用任何需要此ID唯一的应对管理器功能,并且不能(或不想)保证以太网设备在应用管理器启动时处于开启状态。
  3. hardware-id=@yourFile使应用程序管理器在启动时读取yourFile的内容,并使用其内容作为ID;而不是以太网MAC地址。如果您的设备通过/proc/sys提供唯一的设备ID,并且您想使用需要此类ID的功能,则此选项很有用。

生成代码覆盖率数据

除了执行正常构建之外,您还可以通过运行cmake -DAM_COVERAGE=ON来创建覆盖率构建。由于每个编译步骤都需要使用特殊的编译器标志进行票据化,请确保创建一个新构建目录,或者至少清理现有目录。

使用此类型的构建后,您可以在构建目录中运行以下命令生成HTML覆盖率报告

cmake --build . --target check_coverage

命令行输出提供了生成报告的URL。

系统设置

应用程序管理器的运行时配置是通过命令行开关和一个或多个配置文件完成的。

理想情况下,在生产环境中,基本配置通过两个独立的配置文件完成:一个用于针对系统的特定设置,另一个用于系统 UI 的特定设置。例如,针对系统的配置文件将包含安装目录的路径和所需的日志设置;而系统 UI 的配置文件将包含 QML 导入路径和内置应用的路径。

如果您将目标设置存储在 /etc/target-am-config.yaml 中,并且系统 UI 及其 am-config.yamlmain.qml 文件位于 /path/to/system-ui,那么您可以使用以下方法访问应用程序管理器

cd /path/to/system-ui
appman -c /etc/target-am-config.yaml -c am-config.yaml --verbose main.qml

--verbose 将为您提供详细的输出,这在首次设置环境以及调试时非常有用。

© 2024 Qt 公司有限。此处包含的文档贡献的版权归其各自所有者所有。本提供的文档依循自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款。Qt 及其相关标志是芬兰的 Qt 公司及其他多个国家/地区的商标。所有其他商标归其各自所有者所有。