组件运行程序通过 环境 为启动新的 组件实例。
组件管理器通过发送包含以下内容的请求来启动组件:
ComponentStartInfo
传递给相应的运行程序
fuchsia.component.runner.ComponentRunner
协议。
ComponentStartInfo
包含有关组件可执行文件和
其
命名空间
,了解所有最新动态。运行程序管理组件的
在支持的运行时内执行。
启动组件后,组件管理器会使用
已提供 fuchsia.component.runner.ComponentController
协议
在 Start
请求中向运行程序发送执行操作,
例如停止组件跑步者选择如何解读这些信息
命令。
提供运行程序功能
为了提供运行程序功能,组件必须声明 runner
功能,其 path
指定实现 FIDL 协议的 FIDL 协议,
fuchsia.component.runner.ComponentRunner
通过
组件的
外发目录
,了解所有最新动态。
{
capabilities: [
{
runner: "web",
path: "/svc/fuchsia.component.runner.ComponentRunner",
},
],
}
组件管理器向此协议发送 ComponentRunner/Start
请求。
每个请求都包含一个 ComponentController
频道,
运行程序应用于处理组件的生命周期事件。
路由运行程序功能
如需详细了解该框架如何路由组件功能, 请参阅功能路由。
曝光
公开运行程序 capability 可让组件的父项访问该 capability。 功能:
{
expose: [
{
runner: "web",
from: "self",
},
],
}
您可以选择指定以下内容:
成为协作者
提供运行程序功能可让子组件访问它 功能:
{
offer: [
{
runner: "web",
from: "self",
to: [ "#child-a" ],
},
],
}
您可以选择指定以下内容:
注册组件运行程序
组件运行程序可通过
环境。如需在环境中注册新的运行程序,请执行以下操作:
在 environments
声明的 runners
部分添加一个新条目:
environments: [
{
name: "my-environ",
extends: "realm",
runners: [
{
runner: "web",
from: "parent",
},
],
},
]
您可以选择指定以下内容:
如需详细了解如何将环境应用于组件,请参阅 环境文档。
选择跑步者
组件使用 program
指定要执行的适当运行程序
部分。program
部分也指定了 runner
。
与任何运行程序专用选项一样。必须在以下环境中注册运行程序:
组件的环境
例如,作为网页运行的组件可能具有类似如下的 program
:
以下:
program: {
runner: "web",
mode: "incognito",
},
当组件管理器尝试启动该组件时,它会发送一个
向 web
运行程序的提供程序发送请求以启动它。
重命名运行程序
您可以在下面对运行程序功能执行 expose
、offer
或注册
使用 as
参数指定其他名称:
{
expose: [
{
runner: "web",
from: "#chromium",
as: "web-chromium",
},
],
}
框架运行程序
组件框架提供以下内置组件运行程序:
- ELF runner:运行编译为 ELF 文件格式的二进制文件。
{
program: {
runner: "elf",
binary: "bin/example",
},
}