元件管理員使用 fuchsia.component.runner.ComponentRunner
通訊協定,將含有 ComponentStartInfo
的要求傳送至適當的執行元件,藉此啟動元件。
ComponentStartInfo
執行器會在支援的執行階段中管理元件執行作業。
啟動元件後,元件管理員會使用 Start
要求中提供的 fuchsia.component.runner.ComponentController
通訊協定,將執行動作傳送至執行元件,例如停止元件。執行器會根據元件執行階段,選擇如何適當解讀這些指令。
提供執行元件功能
runner
path
fuchsia.component.runner.ComponentRunner
{
capabilities: [
{
runner: "web",
path: "/svc/fuchsia.component.runner.ComponentRunner",
},
],
}
元件管理員會將 ComponentRunner/Start
要求傳送至這個通訊協定。每項要求都包含 ComponentController
管道,執行元件應透過該管道處理元件的生命週期事件。
轉送執行元件功能
元件會將執行器功能「公開」exposing給父項,並提供給子項,藉此轉送執行器功能。
如要進一步瞭解架構路徑元件功能,請參閱「功能轉送」。
公開
公開執行元件能力可讓元件的父項存取該能力:
{
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
參數,以不同名稱expose
、offer
或執行元件能力:
{
expose: [
{
runner: "web",
from: "#chromium",
as: "web-chromium",
},
],
}
架構執行器
元件架構提供下列內建元件執行器:
- ELF 執行器:執行編譯為 ELF 檔案格式的二進位檔。
{
program: {
runner: "elf",
binary: "bin/example",
},
}