组件管理器通过以下方式解析组件网址:在相关环境中查找支持匹配网址架构的解析器,并使用 fuchsia.component.resolution.Resolver
协议发送请求。
如果解析成功,组件解析器会返回 ComponentDecl
,这是组件清单的 FIDL 表示法。如果要解析的组件具有关联的软件包,组件解析器还会返回软件包目录的 fuchsia.io.Directory
句柄。
提供解析器功能
resolver
path
fuchsia.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 |