build 配置使用 **产品** 和 **board** (它们是 GN include)的组合,为 Fuchsia build 提供基准配置。
GN build 配置应包含一个 board GNI 文件和一个产品 GNI 文件。在 fx 中,此对是主要实参
到 fx set 命令。
在 Fuchsia GN build 配置中,board 始终先包含在内。board 会启动三个依赖项列表的定义,然后由导入的产品(以及后来的可选 GN include)进行扩充。这些列表分别是 Base、Cache和Universe, 定义如下。
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 依赖项列表仅向软件包代码库贡献软件包。这些软件包可用于运行时缓存和更新,但不会出现在系统更新映像中,也不会预缓存到任何磁盘映像中。base 和 cache 的所有成员本质上也是 universe 的成员。
关键产品配置
产品定义远不止下面列出的这些,但以下四种产品是特别重要的配置,您需要熟悉:
Bringup
bringup 产品是开发所需的最少可行目标。由于缺少大多数网络功能,bringup 产品
无法使用需要网络连接的 fx 命令,例如
fx serve 和
fx shell,
。
如需了解详情,请参阅 Bringup 产品定义
Core
core 是一组最少的功能,可以安装其他软件(例如添加到“universe”依赖项集中的项)。它是所有更高级别产品配置的起点。它具有常见的网络功能,并且可以通过无线方式更新系统。
Minimal
如 RFC-0220中所述, Minimal 旨在成为 "可以称为 Fuchsia 的最小事物。" 从定义上讲,这是一个可以执行以下操作的系统:
- 启动到用户空间。
- 运行组件管理器和组件。
- 使用 Fuchsia 的无线更新系统自行更新。(这意味着存储和网络正常运行,驱动程序由 board 提供。)
Workbench
Workbench 是一种产品配置,用于本地开发、运行无法或不应以密封方式打包的较大测试,以及运行比 Minimal 支持的 Fuchsia 平台更大的部分。它旨在像一个实际的工作台一样,支持开发工具,并允许开发者检查系统并进行更改。它并非旨在成为向用户发布的产品,也不是这些产品的基础。