功能

capabilities功能可結合對資源的存取權和一組權利,提供存取權控管,以及與資源互動的方式。

元件只能透過命名空間中的可偵測功能,以及其收到的「編號化的控點」,與系統和其他元件互動。

功能轉送

元件在元件資訊清單中,宣告自身為其他元件 (或架構) 提供的系統和功能提供的新功能。元件架構會使用這些宣告來填入命名空間。

可提供 支援路徑 由於功能大多是透過父項元件轉送到子項,因此在為子項元件定義沙箱時,父項元件扮演相當重要的角色。

環境會為指派領域的情況設定架構行為。該架構會存取及使用轉送至環境的功能。元件執行個體無法存取環境中的功能。

可用性功能可讓元件聲明預期功能可提供的情況。

轉送術語

路由術語分為以下類別:

  1. 功能在元件、父項及其子項之間轉送方式的宣告:
    • offer:宣告所列能力可供子項元件執行個體或子項集合使用。
    • expose:宣告列出的功能可供父項元件或架構使用。可為 expose self 或子項元件產生作用。
  2. 元件使用或提供的功能宣告:
    • use除非另有指定,否則功能會從 parent 轉送,且每項能力都必須具有來自來源的有效路徑。
    • capabilities:宣告此元件提供的功能。這裡必須顯示 self 提供或公開的功能。

功能類型

下列功能可轉送:

type 說明 已轉送
protocol 檔案系統節點,用於開啟由 FIDL 通訊協定支援的管道。 元件
service 檔案系統目錄,用於將管道提供給多個服務執行個體之一。 元件
directory 檔案系統目錄。 元件
storage 可寫入的檔案系統目錄,該目錄只與該元件共用的元件。 元件
resolver 這項能力在環境中註冊時,會使具有特定網址配置的元件會透過該解析器解析。 環境
runner 這項能力允許在環境中註冊時,允許架構在啟動元件時使用該執行元件。 環境

範例

請參考以下示例,瞭解如何透過元件執行個體樹狀結構能力轉送:


功能轉送範例

在這個例子中:

  • echo 元件執行個體會提供 fuchsia.Echo 通訊協定做為其宣告的capabilities之一。
  • echo_tool 元件執行個體需要使用 fuchsia.Echo 通訊協定能力

每個中間元件都用於合作,將 fuchsia.Echo 明確從 echo 轉送至 echo_tool

  1. echo 會從 self 公開 fuchsia.Echo,以便其父項 services 可以看到通訊協定。
  2. services 會將 fuchsia.Echo 的子項 echo 公開給其父項 shell
  3. shell 提供 fuchsia.Echo 從其子項 services 給另一個子項 tools
  4. tools 優惠 fuchsia.Echo優惠 parent 給孩子 echo_tool

元件架構會授權 echo_tool 要求使用 fuchsia.Echo,因為系統會找到提供該通訊協定能力的元件有效的路徑。

如要進一步瞭解元件如何在執行階段連線至功能,請參閱「通訊協定開啟生命週期」。