组件管理器通过查找支持
在相关环境中匹配网址架构,并使用
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 |