Fuchsia 软件模型

Fuchsia 是一个操作系统,其功能与传统操作系统有所不同。在尝试针对 Fuchsia 进行开发之前,了解软件模型在 Fuchsia 中的工作原理非常重要。

在 Fuchsia 中,几乎所有内容都是组件,是可执行软件的单元。组件框架用于在紫红色上运行所有组件。如需详细了解组件和组件框架,请参阅 Fuchsia 组件框架简介

API 依赖关系允许不同的组件定义对另一个组件的依赖关系。这些 API 依赖项是抽象的,这意味着接口的实现由另一个组件定义并由组件框架解析。组件通过 FIDL 与其依赖项进行通信,FIDL 是 Fuchsia 使用语言描述 Fuchsia 上运行的组件的进程间通信 (IPC) 协议。如需详细了解 FIDL,请参阅 FIDL 概览

通过软件包分发组件

在 Fuchsia 中,组件及其依赖的文件和映像通常通过软件包进行分发,软件包是 Fuchsia 中的分发单位。

Fuchsia 会在安装时解析打包的依赖项,从而创建 ABI 依赖项。对外部软件包中的资源的引用会在运行时解析,从而创建 API 依赖项,而不是 ABI 依赖项。(运行时解决方案与网络服务架构模型类似。)

组件的组织方式使关键依赖项保持在软件包中;这可扩展到子软件包,这些子软件包在构建时绑定到其所属的软件包,从而允许以静态方式解析 ABI 依赖项。

打包启动其他组件的组件的逻辑方法是使用子软件包来镜像组件父子关系层次结构,这样一来,如果某个组件声明了子组件,则从父组件软件包的已声明子软件包中加载子项。这样封装了 ABI 依赖项,并确保子组件存在预期的 ABI 版本。通过功能路由(按功能名称,如 FIDL 协议等方式公开、路由和使用的服务)组件模型 API 依赖项。软件包依赖项与功能路由的相关性较低,不过,父组件可以编排独立打包的对等组件(无论是否子打包)的创建,并声明它们之间的功能连接。