build 配置

build 配置使用 **产品****board** (它们是 GN include)的组合,为 Fuchsia build 提供基准配置。

GN build 配置应包含一个 board GNI 文件和一个产品 GNI 文件。在 fx 中,此对是主要实参 到 fx set 命令。

在 Fuchsia GN build 配置中,board 始终先包含在内。board 会启动三个依赖项列表的定义,然后由导入的产品(以及后来的可选 GN include)进行扩充。这些列表分别是 BaseCacheUniverse, 定义如下。

board

board {1此配置会影响包含哪些驱动程序,还可能会影响特定于设备的内核参数。

可以使用 fx list-boards 列出可用的 board。

产品

产品定义了 build 将生成的软件配置。最重要的是,产品通常定义了所提供的用户体验类型,例如用户可能会观察到哪种图形界面、是否包含多媒体支持等。

可以使用 fx list-products 列出可用的产品。

依赖项集

board 定义了三个依赖项列表(Base、Cache 和 Universe),产品则对这些列表进行了扩充。这些依赖项是 GN 标签,最终会向各种系统工件(例如磁盘映像和签名软件包元数据)以及各种开发工件(例如主机工具和测试)贡献软件包。

Base

base 依赖项列表会向磁盘映像和系统更新以及软件包代码库贡献软件包。base 依赖项集包含的软件包优先于 cache 依赖项集中的重复成员。系统配置中的基础软件包被认为是系统和安全关键型软件包。它们会作为一个原子单元进行更新,并且无论资源压力如何,在运行时都不会被逐出。

Cache

cache 依赖项列表会贡献预缓存在 build 的磁盘映像工件中的软件包,并且也会在软件包代码库中提供。这些软件包不会添加到系统更新中,而是会以临时方式进行更新。缓存的软件包也可以根据运行时资源需求从运行的系统中逐出,以释放资源。

Universe

universe 依赖项列表仅向软件包代码库贡献软件包。这些软件包可用于运行时缓存和更新,但不会出现在系统更新映像中,也不会预缓存到任何磁盘映像中。basecache 的所有成员本质上也是 universe 的成员。

关键产品配置

产品定义远不止下面列出的这些,但以下四种产品是特别重要的配置,您需要熟悉:

Bringup

bringup 产品是开发所需的最少可行目标。由于缺少大多数网络功能,bringup 产品 无法使用需要网络连接的 fx 命令,例如 fx servefx shell, 。

如需了解详情,请参阅 Bringup 产品定义

Core

core 是一组最少的功能,可以安装其他软件(例如添加到“universe”依赖项集中的项)。它是所有更高级别产品配置的起点。它具有常见的网络功能,并且可以通过无线方式更新系统。

Minimal

RFC-0220中所述, Minimal 旨在成为 "可以称为 Fuchsia 的最小事物。" 从定义上讲,这是一个可以执行以下操作的系统:

  • 启动到用户空间。
  • 运行组件管理器和组件。
  • 使用 Fuchsia 的无线更新系统自行更新。(这意味着存储和网络正常运行,驱动程序由 board 提供。)

Workbench

Workbench 是一种产品配置,用于本地开发、运行无法或不应以密封方式打包的较大测试,以及运行比 Minimal 支持的 Fuchsia 平台更大的部分。它旨在像一个实际的工作台一样,支持开发工具,并允许开发者检查系统并进行更改。它并非旨在成为向用户发布的产品,也不是这些产品的基础。