产品(product)和板型(board)是 GN 包含项,二者组合使用以为 Fuchsia 构建提供基线标准。
一份 GN 构建配置最好仅包含一个板型的 GNI 文件和一个产品的 GNI 文件。在 fx 中,这个配置对是 fx set
命令的主要参数。
在 Fuchsia GN 构建配置中,板型总是最先被包含(include)。板型定义了三个依赖列表,它们可以被之后导入的产品(和再后来可选的 GN 包含项)所扩充。这些列表分别为Base、Cache 和 Universe。
板型
板型(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 serve
和
fx shell
,它们都需要网络连接。
更多信息请参阅 Bringup 产品定义。
Core {#core-product}
core
是能够安装附加软件(例如添加至“universe”依赖集合的项目)的最小特性集合。它是所有高级(high-level)产品配置的起点。它拥有常规网络功能,能够空中(over-the-air)更新系统。
Workstation {#workstation-product}
workstation
是综合目的开发环境的基础,其用户界面、媒体和许多其他高级特性有助于工作进行。这也是爱好者进行体验与探索的最佳环境。
- 中文文档地址:https://fuchsia-china.com/docs/zh-hans/concepts/build_system/boards_and_products/
- GitHub协作地址: https://github.com/FuchsiaOS/FuchsiaOS-docs-zh_CN/blob/2021/concepts/build_system/boards_and_products.md
- 原始英文地址:https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/docs/concepts/build_system/boards_and_products.md
- 翻译者:Whyto 校稿者:N0B8D1
Comments