元件執行器

元件執行程式會透過

元件管理員會使用 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 管道,執行程式應透過該管道處理元件的生命週期事件。

轉送執行元件功能

元件會將執行元件功能公開給父項,並提供給子項。

如要進一步瞭解架構如何轉送元件功能,請參閱「功能轉送」。

公開

公開執行元件能力可讓元件的父項存取該能力:

{
    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 執行元件的供應器傳送要求,以便啟動該元件。

重新命名執行者

您可以使用 as 參數,以不同的名稱exposeoffer執行元件能力:

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

架構執行器

元件架構會提供下列內建元件執行程式:

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