元件解析器

元件解析器會透過環境擴充元件架構,將元件網址解析為元件。

元件管理服務會解析元件網址,方法是在相關環境中尋找支援相符網址配置的解析器,並使用 fuchsia.component.resolution.Resolver 通訊協定傳送要求。

如果解析成功,元件解析器會傳回 ComponentDecl,這是元件資訊清單的 FIDL 表示法。如果解析的元件有關聯的套件,元件解析器也會傳回套件目錄的 fuchsia.io.Directory 控制代碼。

提供解析器功能

如要提供解析器能力,元件必須宣告 resolver 能力,其 path 會指定 FIDL 通訊協定,實作從元件傳出目錄提供的 fuchsia.component.resolution.Resolver。

{
    capabilities: [
        {
            resolver: "my_resolver",
            path: "/svc/fuchsia.component.resolution.Resolver",
        },
    ],
}

元件管理服務會提交要求,將元件網址解析為這個通訊協定。

轉送解析器功能

元件會將解析器功能公開給父項,並提供給子項,藉此轉送解析器功能。

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

公開

公開解析器能力後,元件的父項就能存取該能力:

{
    expose: [
        {
            resolver: "my_resolver",
            from: "self",
        },
    ],
}

提供

提供解析器能力可讓子元件存取該能力:

{
    offer: [
        {
            resolver: "my_resolver",
            from: "self",
            to: [ "#child-a" ],
        },
    ],
}

註冊元件解析器

元件解析器會透過元件的環境提供給元件。如要在環境中註冊新的解析器,請在 environments 宣告的 resolvers 區段中新增項目:

environments: [
    {
        name: "my-environ",
        extends: "realm",
        resolvers: [
            {
                resolver: "my_resolver",
                scheme: "my-scheme",
                from: "parent",
            }
        ],
    },
]

系統會使用已註冊的解析器,解析網址配置與提供的 scheme 相符的元件網址。

如要進一步瞭解如何將環境套用至元件,請參閱環境說明文件。

框架解析器

元件架構提供下列內建元件解析器,可支援標準 Fuchsia 網址配置:

解析器 網址配置
boot_resolver fuchsia-boot
base_resolver fuchsia-pkg
full_resolver fuchsia-pkg