环境,以提供用于启动新组件实例的运行时。
组件管理器使用 fuchsia.component.runner.ComponentRunner
协议向适当的运行程序发送包含 ComponentStartInfo
的请求,以启动组件。ComponentStartInfo
包含有关组件可执行文件及其
该运行程序会在受支持的运行时内管理组件的执行。
启动组件后,组件管理器会使用 Start
请求中提供的 fuchsia.component.runner.ComponentController
协议向运行程序发送执行操作,例如停止组件。运行程序会根据组件运行时选择如何解释这些命令。
提供运行程序功能
如需提供运行程序功能,组件必须声明 runner
功能,其 path
用于指定实现 fuchsia.component.runner.ComponentRunner
的 FIDL 协议,该协议从组件的
{
capabilities: [
{
runner: "web",
path: "/svc/fuchsia.component.runner.ComponentRunner",
},
],
}
组件管理器向此协议发送 ComponentRunner/Start
请求。
每个请求都包含一个 ComponentController
通道,该通道应由运行程序用于处理组件的生命周期事件。
路由运行程序功能
组件通过向其父级公开这些功能并向其子级提供这些功能来路由运行器功能。
如需详细了解该框架如何路由组件功能,请参阅功能路由。
公开
公开 runner capability 可让组件的父级访问该 capability:
{
expose: [
{
runner: "web",
from: "self",
},
],
}
您可以选择性地指定:
成为协作者
提供运行程序 capability 可让子组件访问该 capability:
{
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
运行程序的提供程序发送请求以启动它。
重命名运行程序
您可以使用 as
参数expose
、offer
或注册以其他名称的运行程序功能:
{
expose: [
{
runner: "web",
from: "#chromium",
as: "web-chromium",
},
],
}
框架运行程序
组件框架提供了以下内置组件运行程序:
- ELF 运行程序:运行编译为 ELF 文件格式的二进制文件。
{
program: {
runner: "elf",
binary: "bin/example",
},
}