组件解析器

组件解析器通过 环境 解决 组件网址 转换为组件

组件管理器通过查找支持 在相关环境中匹配网址架构,并使用 fuchsia.component.resolution.Resolver 协议。

如果解析成功,组件解析器就会返回一个 ComponentDecl组件清单。如果要解析的组件包含 关联的软件包,组件解析器也会返回一个 软件包目录的 fuchsia.io.Directory 句柄。

提供解析器功能

如需提供解析器功能,组件必须声明 resolver 功能,其 path 指定实现 FIDL 协议的 FIDL 协议, fuchsia.component.resolution.Resolver,通过组件的 外发目录 ,了解所有最新动态。

{
    capabilities: [
        {
            resolver: "my_resolver",
            path: "/svc/fuchsia.component.resolution.Resolver",
        },
    ],
}

组件管理器提交请求,将组件网址解析为此协议。

路由解析器功能

组件通过将解析器功能公开给其自身 提供给子女。

如需详细了解该框架如何路由组件功能, 请参阅功能路由

曝光

公开解析器功能可让组件的父项访问 功能:

{
    expose: [
        {
            resolver: "my_resolver",
            from: "self",
        },
    ],
}

成为协作者

提供解析器功能可让子组件访问它 功能:

{
    offer: [
        {
            resolver: "my_resolver",
            from: "self",
            to: [ "#child-a" ],
        },
    ],
}

注册组件解析器

组件解析器通过 环境。如需在环境中注册新的解析器,请执行以下操作: 在 environments 声明的 resolvers 部分添加一个新条目:

environments: [
    {
        name: "my-environ",
        extends: "realm",
        resolvers: [
            {
                resolver: "my_resolver",
                scheme: "my-scheme",
                from: "parent",
            }
        ],
    },
]

已注册的解析器将用于解析采用网址架构的组件网址 与提供的 scheme 匹配。

如需详细了解如何将环境应用于组件,请参阅 环境文档

框架解析器

组件框架提供以下内置组件解析器 支持标准 Fuchsia 网址架构:

解析器 网址格式
boot_resolver fuchsia-boot
base_resolver fuchsia-pkg
full-resolver fuchsia-pkg