元件 ID

元件架構會使用不同的 ID 來描述元件。本節將說明下列元件 ID 之間的關係,以及這些 ID 的用途:

  • 元件網址:將元件識別為元件解析工具要擷取的資源。
  • 別名:用於識別元件執行個體樹狀結構中的特定元件執行個體。

元件網址

元件架構會使用元件解析器,將元件網址解析為元件宣告

用量

元件網址的主要用途是在元件執行個體定義中識別元件,做為子項宣告的一部分:

{
    children: [
        {
            name: "logger",
            url: "fuchsia-pkg://fuchsia.com/logger#logger.cm",
        },
    ],
}

上述範例會將 logger 元件宣告為套件存放區中 Fuchsia 套件中的絕對資源。

元件架構也支援相對網址。

如要識別與父項元件建構於相同套件中的元件,請只指定網址片段:

{
    children: [
        {
            name: "child",
            url: "#meta/child.cm",
        }
    ],
}

如要識別父項元件套件的子套件中的元件,請在子套件名稱後方加上元件資訊清單路徑 (透過網址片段):

{
    children: [
        {
            name: "child",
            url: "child#meta/default.cm",
        }
    ],
}

在測試中經常會使用相關元件網址,最佳做法是在測試專用套件中重新封裝正式版元件,以提升密封性

如要進一步瞭解元件網址語法,請參閱元件網址參考資料

路徑名稱

A其語意與 fuchsia.io 路徑類似。

每個路徑元素都是父項元件指派給子項的名稱,最終會識別與最後路徑元素相對應的「葉子元件」。

別名一律會相對於某個項目:父項元件或整個元件拓撲的根。

用量

以下是元件別名的幾個範例:

  • .:自參照路徑名稱。舉例來說,您可以使用這個路徑名稱參照根元件 (由 component_manager 啟動的首個元件)。其他用途則取決於情境。
  • alice/carol/sandy:將「sandy」元件執行個體視為「alice」和「carol」的子項,並以專屬方式識別該元件。
  • alice/support:dan:將元件執行個體「dan」視為「alice」衍生「support」集合中的元素,並以此做為唯一識別。

別名會傳遞至開發人員工具 (例如 ffx component explore),用於識別目標裝置上的特定元件執行個體。這些元素也構成診斷選取器語法的前半部。

開發人員工具實作會使用別名,與目標裝置上的特定元件執行個體互動。

如要進一步瞭解元件路徑名稱語法,請參閱路徑名稱

設計原則

穩定性

只要元件所屬的元件拓撲不變,別名就是穩定的 ID。

隱私權

別名可能包含使用者正在執行的其他元件相關的隱私權敏感資訊。

為保留元件的封裝,元件無法判斷在其自身領域外執行的其他元件的路徑名稱。元件無法學習自己的路徑名稱、父項或同胞元件的別名。

別名可能會顯示在系統記錄檔和開發人員工具的輸出內容中。