组件运行程序

组件运行程序通过 环境 为启动新的 组件实例。

组件管理器通过发送包含以下内容的请求来启动组件: 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 运行程序的提供程序发送请求以启动它。

重命名运行程序

您可以在下面对运行程序功能执行 exposeoffer注册 使用 as 参数指定其他名称:

{
    expose: [
        {
            runner: "web",
            from: "#chromium",
            as: "web-chromium",
        },
    ],
}

框架运行程序

组件框架提供以下内置组件运行程序:

  • ELF runner:运行编译为 ELF 文件格式的二进制文件。
{
    program: {
        runner: "elf",
        binary: "bin/example",
    },
}