元件管理員會使用 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
參數,以不同的名稱expose
、offer
或執行元件能力:
{
expose: [
{
runner: "web",
from: "#chromium",
as: "web-chromium",
},
],
}
架構執行器
元件架構會提供下列內建元件執行程式:
- ELF 執行器:執行編譯為 ELF 檔案格式的二進位檔。
{
program: {
runner: "elf",
binary: "bin/example",
},
}