组件解析器

组件管理器通过以下方式解析组件网址:在相关环境中查找支持匹配网址架构的解析器,并使用 fuchsia.component.resolution.Resolver 协议发送请求。

如果解析成功,组件解析器会返回 ComponentDecl,这是组件清单的 FIDL 表示法。如果要解析的组件具有关联的软件包,组件解析器还会返回软件包目录的 fuchsia.io.Directory 句柄。

提供解析器功能

resolverpathfuchsia.component.resolution.Resolver

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

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

路由解析器功能

组件通过向父级公开exposing并将其提供给子级提供它们来路由解析器功能。

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

正在曝光

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

{
    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