组件运行程序

环境,以提供用于启动新组件实例的运行时。

组件管理器使用 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 参数exposeoffer注册以其他名称的运行程序功能:

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

框架运行程序

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

{
    program: {
        runner: "elf",
        binary: "bin/example",
    },
}