产品和板型

产品(product)和板型(board)是 GN 包含项,二者组合使用以为 Fuchsia 构建提供基线标准。

一份 GN 构建配置最好仅包含一个板型的 GNI 文件和一个产品的 GNI 文件。在 fx 中,这个配置对是 fx set 命令的主要参数。

在 Fuchsia GN 构建配置中,板型总是最先被包含(include)。板型定义了三个依赖列表,它们可以被之后导入的产品(和再后来可选的 GN 包含项)所扩充。这些列表分别为BaseCacheUniverse

板型

板型(board)定义了构建制作所面向的架构,也定义了构建所计划运行的设备的关键特性。该配置中包括哪些驱动包含在内,并且也可能影响设备特定的(device specific)内核参数。

产品

产品(product)定义了构建将会产生的软件配置。至关重要的是,产品通常定义了所提供的用户体验类型,例如用户将查看到哪种图形外壳(graphical shell),多媒体支持是否包含在内,等等。

依赖集合

板型定义、产品扩充了三个依赖列表:Base、Cache 和 Universe。这些依赖是 GN 标签,它们最终将包(package)提交给各种系统部件(例如磁盘镜像和签名的包元数据),以及各种开发部件(例如主机工具和测试)。

Base

base 依赖列表将包提交给磁盘镜像、系统更新和包仓库。包含在 base 依赖集合内的包优先于 cache 依赖集合中的副本成员。系统配置中的 base 包被认定为对系统和安全性至关重要。它们作为原子单元升级,并且在运行时期,无论资源压力有多大,都绝不会被剔除。

Cache

cache 依赖列表提交预先缓存在构建的磁盘镜像部件中的包,这些包在包仓库中也会变得可用。这些包没有添加至系统更新,但会在短期内更新。cache 包在系统运行时,会根据资源需要被剔除以释放资源。

Universe

cache 依赖列表仅将包提交至包仓库。这些包将在运行时缓存和更新中可用,但在系统更新镜像中无法找到,也不会被预先缓存在任何磁盘镜像中。所有 base 成员和 cache 成员内在地也都是 universe 成员。

关键产品配置

实际上的种类远多于下列三个,但是它们尤为重要,需要熟悉:

Bringup {#bringup-product}

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

更多信息请参阅 Bringup 产品定义

Core {#core-product}

core 是能够安装附加软件(例如添加至“universe”依赖集合的项目)的最小特性集合。它是所有高级(high-level)产品配置的起点。它拥有常规网络功能,能够空中(over-the-air)更新系统。

Workstation {#workstation-product}

workstation 是综合目的开发环境的基础,其用户界面、媒体和许多其他高级特性有助于工作进行。这也是爱好者进行体验与探索的最佳环境。