環境

「環境」可讓您設定架構在運作範圍中為元件做出的特定選項。元件資訊清單可以定義環境,並將其指派給子項運作範圍。除非某些子運作領域覆寫,否則環境會套用至元件執行個體的整個運作領域 (請參閱傳播)。

屬性

您可以透過環境設定下列領域的下列行為:

跑者

元件架構不受執行階段的影響,可支援新的執行階段環境和程式設計語言,無須變更元件管理員或其他元件。執行器會為元件提供擴充點,讓元件與元件管理員互動,並為 Fuchsia 新增執行階段支援。以下是一些執行器的範例:

  • ELF 執行器會執行編譯為 ELF 檔案格式的二進位檔。
  • Dart AOT 執行元件為 Dart 程式 (例如 VM) 提供執行階段。
  • Chromium 網路執行元件會針對以網頁形式實作的元件提供執行階段。

元件管理員會決定要執行「什麼」,並將執行作業「如何」委派給執行元件。執行器實作項目可讓您自由選擇適當的元件執行策略,包括:

  • 為元件啟動新的程序。
  • 在虛擬機器中區隔元件。
  • 請在與執行器相同的程序中執行元件。
  • 在遠端電腦上將元件當做工作執行。

如要進一步瞭解如何使用及實作執行器,請參閱「執行器功能」。

解析器

httpfuchsia-pkg

如果解析的元件具有相關聯的套件,解析器也會回傳代表套件目錄的 fuchsia.io.Directory 控制代碼。

如要進一步瞭解如何使用及實作解析器,請參閱「解析功能」。

宣告

環境宣告新增至元件資訊清單,即可定義新環境。

您必須將環境指派給子項或集合,才能使用環境。請參閱「傳播」一文。

環境支援兩種擴充功能模式,即 REALMNONE

  • REALM:環境會繼承指派給此元件的環境 (即「父項環境」) 的屬性。 所有新屬性都會新增至繼承自父項環境的父項。與父項環境重疊的所有屬性都會覆寫父項。
  • NONE:環境一開始是空的,沒有初始屬性。

傳播

元件執行個體會透過下列其中一種方式指派環境:

  • 子項集合未設定 environment。在這種情況下,它會接收其父項環境。這是最常見的情況。
  • 其「子項」或「集合」會設定 environment,參照此元件定義的其中一個 environments

根元件會透過元件管理員指派環境。這包括啟動解析器、ELF 執行器,以及預設設定選項。

環境與能力轉送

環境的語意與功能轉送具有對比。使用能力轉送,從供應器到取用端的路徑中,每個元件都必須明確公開提供能力。明確的能力轉送特性可讓您輕鬆確保元件不會接收其不應具備的功能,進而維持最低權限原則

不過,針對個別元件,有些設定選項並不合理。例如,考慮跑者。儘管每個元件都需要使用執行元件,但定義新執行元件並不罕見,尤其是比定義通訊協定能力較不常見。此外,執行元件的存取權並不會對元件授予大量權限,而元件架構則無法中介執行元件通訊協定的存取權,元件無法直接使用該通訊協定。因此,執行元件功能會登錄於環境中,因此可以提供給該環境的任何元件使用 (除非某些子領域決定在沒有執行元件的情況下設定新環境)。