组件运行程序

组件管理器使用 fuchsia.component.runner.ComponentRunner 协议将包含 ComponentStartInfo 的请求发送到相应的运行程序,以启动组件。ComponentStartInfo运行程序会在受支持的运行时中管理组件的执行。

启动组件后,组件管理器会使用 Start 请求中提供的 fuchsia.component.runner.ComponentController 协议向运行程序发送执行操作,例如停止组件。运行程序会选择如何根据组件运行时解释这些命令。

提供运行程序功能

runnerpathfuchsia.component.runner.ComponentRunner

{
    capabilities: [
        {
            runner: "web",
            path: "/svc/fuchsia.component.runner.ComponentRunner",
        },
    ],
}

组件管理器会向此协议发送 ComponentRunner/Start 请求。 每个请求都包含一个 ComponentController 渠道,运行程序应通过该渠道处理组件的生命周期事件。

路由运行程序功能

组件通过向父级公开exposing这些功能并将其提供给子级,来路由运行程序功能。

如需详细了解框架如何路由组件功能,请参阅功能路由

正在曝光

公开运行程序 capability 可让组件的父项使用该功能:

{
    expose: [
        {
            runner: "web",
            from: "self",
        },
    ],
}

您可以视需要指定:

成为协作者

提供运行程序 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 参数以不同的名称 exposeofferregister运行程序 capability:

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

框架运行程序

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

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