元件資訊清單 (.cml) 參考資料

.cml 檔案包含單一 json5 物件常值,並使用下列索引鍵。

在預期字串值的情況下,一般會記錄有效值的清單。 下列字串值類型會重複使用,且必須符合特定規則。

.cml 檔案會編譯為 FIDL 線格式 (.cm) 檔案。

字串類型

名稱

功能和元件的子項都已命名。名稱字串可以是 由下列一或多個字元組成:A-Za-z0-9_.-。長度不得超過 255 個字元,而且不得開始 搭配 .-

路徑

路徑是一系列名稱,以 / 字元分隔。路徑 長度不得超過 4095 個字元。整份文件

  • 相對路徑不得以 / 字元做為開頭。
  • 命名空間和傳出目錄路徑的開頭須為 / 字元。

參考資料

參照字串採用 #<name> 的格式,其中 <name> 是指子項的名稱:

頂層鍵

include

string 的陣列 (選填)

選用的 include 屬性描述零或多個其他元件資訊清單 檔案合併至此元件資訊清單例如:

include: [ "syslog/client.shard.cml" ]

在上述範例中,元件資訊清單包含來自 由 syslog 程式庫提供的資訊清單資料分割,因此能確保 如果元件嘗試寫入 syslog,元件就會在執行階段正常運作。變更者: 這種慣例檔案稱為「資訊清單資料分割」結尾則是 .shard.cml

包含前面加上 // 的路徑是與 Fuchsia 來源根目錄的相對路徑 結帳。但是,請納入前面沒有 // 的路徑,如範例所示 以上,從匯出的 Fuchsia SDK 程式庫 (//sdk/lib) 中解析 分別是元件資訊清單資料分割。

在此舉例說明,在 Fuchsia 檢查中,這兩個包含路徑: 相同:

  • syslog/client.shard.cml
  • //sdk/lib/syslog/client.shard.cml

您可以查看將 any 及 all include 合併到元件後的結果 來叫用資訊清單檔案:

fx cmc include cml_file --includeroot $FUCHSIA_DIR --includepath $FUCHSIA_DIR/sdk/lib

內含可處理重複的 useofferexposecapabilities 的宣告,只要屬性相同,就會參照相同能力。例如:

// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
    {
        protocol: [
            "fuchsia.logger.LogSink",
            "fuchsia.posix.socket.Provider",
        ],
    },
],

// syslog.client.shard.cml
use: [
    { protocol: "fuchsia.logger.LogSink" },
],

在這個範例中,合併檔案的內容會與 my_component.cml 相同 已刪除重複的 fuchsia.logger.LogSink

不過,這樣無法編譯:

// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
    {
        protocol: "fuchsia.logger.LogSink",
        // properties for fuchsia.logger.LogSink don't match
        from: "#archivist",
    },
],

// syslog.client.shard.cml
use: [
    { protocol: "fuchsia.logger.LogSink" },
],

availability 屬性是此限制的例外狀況。如果有兩個轉送宣告 彼此相較,其中一個可用性較高 「促銷」設為較大的值 (如果缺少 availability,則預設值為 required)。 例如:

// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
    {
        protocol: [
            "fuchsia.logger.LogSink",
            "fuchsia.posix.socket.Provider",
        ],
        availability: "optional",
    },
],

// syslog.client.shard.cml
use: [
    {
        protocol: "fuchsia.logger.LogSink"
        availability: "required",  // This is the default
    },
],

變更為:

use: [
    {
        protocol: "fuchsia.posix.socket.Provider",
        availability: "optional",
    },
    {
        protocol: "fuchsia.logger.LogSink",
        availability: "required",
    },
],

包括具有遞移性,也就是說,資料分割本身可包含。

包含路徑可以有鑽石依賴。舉例來說,以下情況有效: A 包含 B、A 包含 C、B 包含 D、C 以及 D。 在此案例中,A 便間接納入 B、C、D。

包含路徑不得包含週期。舉例來說,這個值無效: A 包含 B、B 和 A。 諸如上述的週期會導致編譯時間錯誤。

disable

object (選填)

disable 區段會停用特定 CML 中特定 CML 的特定功能 否則就會由 cmc 強制執行。

  • must_offer_protocol:(選用 string 的陣列) 列出「--must-offer-protocol」選項的通訊協定已停用。
  • must_use_protocol:(選用 string 的陣列) 列出「--must-use-protocol」選項的通訊協定已停用。

範例:

disable: {
    must_offer_protocol: [ "fuchsia.logger.LogSink", "fuchsia.component.Binder" ],
    must_use_protocol: [ "fuchsia.logger.LogSink" ],
}

program

object (選填)

可執行的元件包括 program 區段。program 部分必須設定 runner 屬性,才能選取要執行的 Runner 這個元件其餘 program 部分的格式取決於 特定執行元件

ELF 跑者

如果元件使用 ELF 執行元件,program 必須包含下列項目 或屬性:

  • runner:必須設為 "elf"
  • binary:可執行二進位檔的套件相對路徑
  • args (選用):引數清單

範例:

program: {
    runner: "elf",
    binary: "bin/hippo",
    args: [ "Hello", "hippos!" ],
},

如需完整的屬性清單,請參閱「ELF Runner」一文

其他跑者

如果元件使用自訂執行元件,則 program 段內的值 runner 是執行元件專屬的值。執行器會將引數做為 鍵/值組合的字典。請參閱 判斷預期接收的金鑰,以及對這些金鑰的解讀方式。

children

object 的陣列 (選填)

children 區段會宣告子元件例項,如 「子元件執行個體」

  • name:(string) 子項元件執行個體的名稱,此為 下列其中一個或多個字元:a-z0-9_.-。名稱 會在參考資料中使用這個元件。
  • url:(string) 子項元件執行個體的元件網址
  • startup:(string) 元件執行個體的啟動模式。下列其中一項:
    • lazy (預設):只在其他元件執行個體時啟動元件執行個體 是繫結至元件執行個體
    • eager:在元件執行個體發生父項時立刻啟動 就可以開始
  • on_terminate:(非必要的 string) 決定這個元件終止時要套用的故障復原政策。
    • none (預設):不執行任何動作。
    • reboot:如果元件終止 。這是一項特殊功能,只能用於少數 元件;詳情請參閱終止政策 可能不準確或不適當
  • environment:(選用 string) 如果存在,則為要指派給子項元件執行個體的環境名稱, /environments。如果省略,子項會繼承相同的環境 這個元件

範例:

children: [
    {
        name: "logger",
        url: "fuchsia-pkg://fuchsia.com/logger#logger.cm",
    },
    {
        name: "pkg_cache",
        url: "fuchsia-pkg://fuchsia.com/pkg_cache#meta/pkg_cache.cm",
        startup: "eager",
    },
    {
        name: "child",
        url: "#meta/child.cm",
    }
],

collections

object 的陣列 (選填)

collections 部分會宣告集合內容如下 「元件集合」

  • name:(string) 元件集合的名稱,是單一或 以下的更多字元:a-z0-9_.-。名稱 會在參考資料中使用時識別這個集合。
  • durability:(string) 集合中子元件例項的時間長度。
    • transient:執行個體持續存在,直到父項停止或遭到停止為止 已明確銷毀。
    • single_run:執行個體在建立時會啟動,且已刪除 要在容器停止時停止播放
  • environment:(選用 string) 如果存在此環境,將會是 未指派給這個集合中的執行個體 environments。如果省略,此集合中的例項 會沿用指派給這個元件的相同環境。
  • allowed_offers:(選用 string) 針對這個集合中元件鎖定的動態優惠內容限制。 呼叫 fuchsia.component.Realm/CreateChild 時會指定動態優惠。
    • static_only:僅限這個 .cml 檔案中指定的檔案。無動態優惠。 此為預設值。
    • static_and_dynamic:同時包含靜態優惠和執行階段指定的優惠 系統允許使用 CreateChild
  • allow_long_names:(選用 bool) 允許子名稱的長度不超過 1024 個半形字元,而非一般的 255 個字元限制。 預設值為 false。
  • persistent_storage:(非必要bool) 如果設為 true,則動態子項執行個體使用的獨立儲存空間中的資料,以及 執行個體刪除後,這些物件子係也會持續存在新的子項執行個體 如果以相同名稱建立,儲存空間路徑會與先前的執行個體相同。

範例:

collections: [
    {
        name: "tests",
        durability: "transient",
    },
],

environments

object 的陣列 (選填)

environments 區段會宣告環境,如以下所述: 環境

  • name:(string) 環境名稱,是一或多個 以下字元:a-z0-9_.-。這個名稱可用來識別 使用在參考資料中的環境。
  • extends:(選用 string) 環境應如何擴充此領域的環境。
    • realm:繼承此元件環境的所有屬性。
    • none:從空白環境開始,不要繼承任何項目。
  • runners:(object 的選用陣列) 在環境中註冊的執行器。物件陣列 並包含下列屬性:

    • runner:(string) 執行元件能力的「名稱」,其來源在 from 中指定。
    • from:(string) 執行元件能力的來源,可以是下列其中一項:
      • parent:元件的父項。
      • self:此元件。
      • #<child-name>:子項元件的參照 執行個體。
    • as:(選用 string) 執行元件的明確名稱,因為其顯示名稱 在這個環境中。省略時,會預設為 runner
  • resolvers:(object 的選用陣列) 在環境中註冊的解析器。陣列 並包含以下屬性:

    • resolver:(string) 解析器能力的「名稱」。 來源是在 from 指定。
    • from:(string) 解析器能力的來源,可以是下列其中一項:
      • parent:元件的父項。
      • self:此元件。
      • #<child-name>:子項元件的參照 執行個體。
    • scheme:(string) 解析器應處理的網址配置 解析度。
  • debug:(object 的選用陣列) 在這個環境中取得的任何元件可用的偵錯通訊協定 至 use from debug

    • protocol:(選用 string or array of strings) 要提供的通訊協定名稱。
    • from:(string) 能力的來源,下列其中一個:
      • parent:元件的父項。
      • self:此元件。
      • #<child-name>:子項元件的參照 執行個體。
    • as:(選用 string) 若指定此屬性,則應將 protocol 中的能力命名為 供客戶使用如果 protocol 是陣列,就不允許這種做法。
  • __stop_timeout_ms:(選用 number) 通知這個環境中的元件後,要等待的毫秒數 並有可能強制終止如果環境 從 none 開始。

範例:

environments: [
    {
        name: "test-env",
        extends: "realm",
        runners: [
            {
                runner: "gtest-runner",
                from: "#gtest",
            },
        ],
        resolvers: [
            {
                resolver: "full-resolver",
                from: "parent",
                scheme: "fuchsia-pkg",
            },
        ],
    },
],

capabilities

object 的陣列 (選填)

capabilities 區段定義了此元件提供的功能。 您必須宣告從 self 提供公開的功能 此處。

功能欄位

這會支援下列能力鍵。必須明確設定下列其中一項:

  • protocol:(非必要的 string or array of strings)
  • service:(非必要的 string or array of strings)
  • directory:(非必要的 string)
  • storage:(非必要的 string)
  • runner:(非必要的 string)
  • resolver:(非必要的 string)
  • event_stream:(非必要的 string or array of strings)
  • dictionary:(非必要的 string)
  • config:(非必要的 string)

其他欄位

這項指令支援下列額外欄位:

  • path:(選用 string) 元件傳出目錄中的路徑 取得應用程式所需的能力

    針對 protocolservice,預設為 /svc/${protocol},否則為必要。

    如果是 protocol,路徑目標「必須是」管道,一般會使用 與這個能力名稱相符的通訊協定

    如果是 servicedirectory,路徑的目標「必須」是目錄。

    runner來說,路徑目標「必須是」管道且必須說出 通訊協定 fuchsia.component.runner.ComponentRunner

    resolver來說,路徑目標「必須是」管道且必須說出 通訊協定 fuchsia.component.resolution.Resolver

  • rights:(選用 array of string) (僅限 directory) 可設定的「目錄最高權限」 確認使用的名稱

  • from:(選用 string) (僅限 storage) 支援此動作的現有目錄能力來源元件 儲存空間能力其中之一:

    • parent:元件的父項。
    • self:此元件。
    • #<child-name>:子項元件的參照 執行個體。
  • extends:(選用 string) (僅限 dictionary,選用) 用於初始化字典的內容。下列其中一項:

    • parent/<relative_path>parent 提供的字典路徑。
    • #<child-name>/<relative_path>:由 #<child-name> 公開的字典路徑。
    • self/<relative_path>:這個元件定義的字典路徑。
    • program/<relative_path>:此元件程式提供的字典路徑。 是程式的傳出目錄路徑,指向 fuchsia.component.sandbox/DictionaryGetter 通訊協定。 <relative_path> 可以是識別字典能力的名稱,或 包含多個部分的路徑,來識別巢狀字典。
  • backing_dir:(非必要的 string) (僅限 storage) 備份儲存空間的目錄能力 名稱。 能力必須可透過 from 中參照的元件使用。

  • subdir:(選用 string) (僅限 storage) backing_dir 中的子目錄,其中每個元件隔離儲存空間

  • storage_id:(非必要string) (僅限 storage) 用於區隔元件儲存空間的 ID,可以是以下任一種:

    • static_instance_id:使用元件 ID 索引中的執行個體 ID 做為元件儲存空間的索引鍵未列出的元件 元件 ID 索引將無法使用這項儲存空間能力。
    • static_instance_id_or_moniker:如果元件列於 執行個體 ID 索引,執行個體 ID 會用作元件的 如果 30 天內讀取資料不到一次 建議使用 Coldline Storage否則,從儲存體中 元件的路徑名稱 資料傳輸量
  • type:(選用 string) (僅限 configuration) 設定類型,可以是下列其中一項:

    • bool:布林類型。
    • uint8:未簽署的 8 位元類型。
    • uint16:未簽署的 16 位元類型。
    • uint32:未簽署的 32 位元類型。
    • uint64:未簽署的 64 位元類型。
    • int8:帶正負號的 8 位元類型。
    • int16:帶正負號的 16 位元類型。
    • int32:帶正負號的 32 位元類型。
    • int64:帶正負號的 64 位元類型。
    • string:ASCII 字串類型。
    • vector:向量類型。如要瞭解向量內的元素類型,請參閱 element
  • max_size:(非必要的 non-zero number) (僅限 configuration) 只有在 type 設定為「字串」時才會支援。 這是字串的大小上限。

  • max_count:(選用 non-zero number) (僅限 configuration) 只有在這項設定 type 為「向量」時才會支援。 這是向量中元素的數量上限。

  • element:(選用 object) (僅限 configuration) 只有在這項設定 type 為「向量」時才會支援。 這是設定向量中的元素類型。

    範例 (簡式類型):

    { type: "uint8" }
    

    範例 (字串類型):

    {
      type: "string",
      max_size: 100,
    }
    
  • value:(選用 any) (僅限 configuration) 設定的值。

  • delivery:(選用 string) (僅限 protocol) 指定架構開啟通訊協定的時間 存取這個元件的傳出目錄 技術。允許的值包括:

    • eager:(預設) 架構將盡快開啟能力 有些消費者元件會要求該物件。
    • on_readable:架構會在伺服器時開啟能力 現在可以讀取連線要求中的端點管道

use

object 的陣列 (選填)

如果是可執行的元件,請宣告其功能 元件在執行階段所需的命名空間。 除非另有指定,否則功能會從 parent 轉送。 且每項能力都必須有可以通過所有元件的有效路徑 這項元件和能力的來源

功能欄位

這會支援下列能力鍵。必須明確設定下列其中一項:

  • service:(非必要的 string or array of strings)
  • directory:(非必要的 string)
  • protocol:(非必要的 string or array of strings)
  • dictionary:(非必要的 string)
  • storage:(非必要的 string)
  • event_stream:(非必要的 string or array of strings)
  • runner:(非必要的 string)
  • config:(非必要的 string)

其他欄位

這項指令支援下列額外欄位:

  • from:(非必要的 string) 能力的來源。預設值為 parent。下列其中一項:

    • parent:元件的父項。
    • debug:位於 [debug_capabilities][fidl-環境-decl] 的其中一個 指派給這個元件的環境
    • framework:元件架構執行階段。
    • self:此元件。
    • #<capability-name>:另一個能力的名稱 所要求的能力
    • #<child-name>:子項元件的參照 執行個體。

    [fidl-環境-decl]:/reference/fidl/fuchsia.component.decl#Environment

  • path:(選用 string) 在元件的命名空間中安裝能力的路徑。對於通訊協定 預設值為 /svc/${protocol}。「directory」和「storage」的必要欄位。這個資源為 不允許使用能力名稱陣列和執行元件功能的宣告。

  • rights:(選用array of string) (僅限 directory) 適用的最高目錄權限 複製到元件命名空間的目錄

  • subdir:(非必要的 string) (僅限 directory) 位於目錄能力內的子目錄,可在 元件的命名空間

  • scope:(非必要的 string or array of strings) (僅限 event_stream) 定義時,事件串流只會包含與 元件。

  • filter:(選用object) (僅限 event_stream) 功能要求的事件串流必須指定篩選條件 ,用來表示事件串流中事件適用的通訊協定。當內容 篩選器將會是「name」的物件對應對應至「通訊協定名稱」

  • dependency:(選用 string) 來源與 此元件為下列其中之一:

    • strong:的重要依附元件,用於判斷關機情形 排序元件管理員保證在 來源。此為預設值。
    • weak:較弱的依附元件,會在關閉時忽略。元件管理員 來源可能會在用戶端之前就停止。弱點用戶端 依附元件必須能夠處理無法使用的依附元件。 此屬性不允許執行元件功能 (一律為 strong 依附元件)。
  • availability:(選用 string) 預期這項能力可用性的預期情況。一 :

    • required (預設):必要依附元件,元件無法執行 即使沒有這項能力,系統也能運作
    • optional:為選用的依附元件,元件無需這項資訊就能運作 (如果該能力無法使用, 停用)。
    • transitional:來源可能會在沒有路徑的情況下完全省略路線 void起。用於引進新功能的柔和轉換。 此屬性不適用於一律為 required 的執行元件功能。

    詳情請參閱 availability [供應情形] 說明文件。

  • key:(選用 string) (config) 元件中的設定鍵config封鎖此能力 設定。

  • type:(選用 string) (僅限 config) 設定類型,可以是下列其中一項:

    • bool:布林類型。
    • uint8:未簽署的 8 位元類型。
    • uint16:未簽署的 16 位元類型。
    • uint32:未簽署的 32 位元類型。
    • uint64:未簽署的 64 位元類型。
    • int8:帶正負號的 8 位元類型。
    • int16:帶正負號的 16 位元類型。
    • int32:帶正負號的 32 位元類型。
    • int64:帶正負號的 64 位元類型。
    • string:ASCII 字串類型。
    • vector:向量類型。如要瞭解向量內的元素類型,請參閱 element
  • max_size:(非必要的 non-zero number) (僅限 configuration) 只有在 type 設定為「字串」時才會支援。 這是字串的大小上限。

  • max_count:(選用 non-zero number) (僅限 configuration) 只有在這項設定 type 為「向量」時才會支援。 這是向量中元素的數量上限。

  • element:(選用 object) (僅限 configuration) 只有在這項設定 type 為「向量」時才會支援。 這是設定向量中的元素類型。

    範例 (簡式類型):

    { type: "uint8" }
    

    範例 (字串類型):

    {
      type: "string",
      max_size: 100,
    }
    
  • default:(非必要any) (僅限 configuration) 此設定的預設值。 如果能力為選用性質,且從 void 轉送,系統會使用預設值。 只有 availability 不是 required 時才會支援。

範例:

use: [
    {
        protocol: [
            "fuchsia.ui.scenic.Scenic",
            "fuchsia.accessibility.Manager",
        ]
    },
    {
        directory: "themes",
        path: "/data/themes",
        rights: [ "r*" ],
    },
    {
        storage: "persistent",
        path: "/data",
    },
    {
        event_stream: [
            "started",
            "stopped",
        ],
        from: "framework",
    },
    {
        runner: "own_test_runner".
        from: "#test_runner",
    },
],

expose

object 的陣列 (選填)

宣告父項元件或 這個架構的重點在於這個屬性的有效期限為 self 或子項元件的 expose

功能欄位

這會支援下列能力鍵。必須明確設定下列其中一項:

  • service:(非必要的 string or array of strings)
  • protocol:(非必要的 string or array of strings)
  • directory:(非必要的 string)
  • runner:(非必要的 string)
  • resolver:(非必要的 string)
  • dictionary:(非必要的 string)
  • config:(非必要的 string)

其他欄位

這項指令支援下列額外欄位:

  • from:(string or array of strings) from:能力來源,下列其中一個值:
    • self:此元件。需要 capability 宣告。
    • framework:元件架構執行階段。
    • #<child-name>:子項元件的參照 執行個體。
  • as:(非必要的 string) 能力的「名稱」 (由目標識別)。省略時 預設會使用原始名稱。包含多個能力的陣列時,無法使用 as 網路名稱
  • to:(非必要的 string) 能力目標。parentframework。預設為 parent
  • rights:(選用array of string) (僅限 directory) 適用的最高目錄權限 公開目錄能力
  • subdir:(選用 string) (僅限 directory) 來源目錄中子目錄的相對路徑 具備轉送能力
  • event_stream:(選用 string or array of strings) (僅限 event_stream) 公開的事件串流名稱。
  • scope:(選用 string or array of strings) (僅限 event_stream) 公開的事件串流範圍。用途 縮小事件串流參照的元件範圍,並只參照 定義範圍中定義的元件
  • availability:(選用 string) availability (選用):預期此能力可用性的預期情況。受影響的國家/地區 建構時間和執行階段路徑驗證。下列其中一項:

    • required (預設):必要的依附元件,來源必須存在並提供。使用 而在這項公開的目標中,必須能正常運作。
    • optional:選用的依附元件。當公開的目標可以函式使用時 無論是否具備這項能力目標不得包含 required 依附元件 技術。此公開項目的最終來源必須是 void 或實際元件。
    • same_as_target:這項能力的可用性預期將與 目標。如果目標需要能力,則這個欄位會設為 required。 如果目標包含能力上的選用依附元件,則該欄位會設為 optional
    • transitional:類似 optional,但容許缺少來源。使用這份草稿 ,避免在多步驟程式碼變更的過渡期間發生驗證錯誤。

    詳情請參閱 availability [供應情形] 說明文件。

  • source_availability:(非必要string) 是否必須提供這項優惠的來源。下列其中一項:

    • required (預設):必須在這個資訊清單中定義來源 (from)。
    • unknown:如果優惠的來源 (from),這項優惠的來源將改寫為void 包含處理後,就不會在這個資訊清單中定義。

範例:

expose: [
    {
        directory: "themes",
        from: "self",
    },
    {
        protocol: "pkg.Cache",
        from: "#pkg_cache",
        as: "fuchsia.pkg.PackageCache",
    },
    {
        protocol: [
            "fuchsia.ui.app.ViewProvider",
            "fuchsia.fonts.Provider",
        ],
        from: "self",
    },
    {
        runner: "web-chromium",
        from: "#web_runner",
        as: "web",
    },
    {
        resolver: "full-resolver",
        from: "#full-resolver",
    },
],

offer

object 的陣列 (選填)

宣告子項元件可使用的功能 或子項集合

功能欄位

這會支援下列能力鍵。必須明確設定下列其中一項:

  • protocol:(非必要的 string or array of strings)
  • service:(非必要的 string or array of strings)
  • directory:(非必要的 string)
  • storage:(非必要的 string)
  • runner:(非必要的 string)
  • resolver:(非必要的 string)
  • event_stream:(非必要的 string or array of strings)
  • dictionary:(非必要的 string)
  • config:(非必要的 string)

其他欄位

這項指令支援下列額外欄位:

  • service:(選用 string or array of strings) 轉送服務時,是指服務功能的「名稱」
  • protocol:(選用 string or array of strings) 轉送通訊協定時,通訊協定功能名稱
  • directory:(選用 string or array of strings) 轉送目錄時,目錄功能名稱
  • runner:(選用 string or array of strings) 轉送執行元件時,此為執行器功能名稱
  • resolver:(選用 string or array of strings) 轉送解析器時,此為解析器功能名稱
  • storage:(選用 string or array of strings) 轉送儲存空間能力時,儲存空間功能名稱
  • dictionary:(選用 ) 轉送字典時,字典功能名稱string or array of strings
  • config:(選用 string or array of strings) 轉送設定時,設定能力的「名稱」
  • from:(string or array of strings) from:能力來源,下列其中一個值:
    • parent:元件的父項。這個來源適用於所有 以及能力類型
    • self:此元件。需要 capability 宣告。
    • framework:元件架構執行階段。
    • #<child-name>:子項元件的參照 執行個體。這個來源只能用於提供通訊協定、 目錄或執行元件功能
    • void:刻意省略來源。只有在 availabilityoptionaltransitional
  • to:(string or array of strings) 功能目標。下列其中一項:
    • #<target-name> 或 [#name1, ...]:子項或集合的參照; 或參照陣列
    • alloffer 子句的簡寫,包含所有子項參照
  • as:(非必要的 string) 能力的明確「名稱」,因為目標會使用。省略時 預設會使用原始名稱。如果包含多個名稱的陣列為,則無法使用 as 或更新提示
  • dependency:(選用 string) 來源與 請指定下列其中一項:
    • strong:的重要依附元件,用於判斷關機情形 排序元件管理員保證在 來源。此為預設值。
    • weak:較弱的依附元件,會在期間忽略 關機。當元件管理員停止父項領域時,來源可能會 就在用戶端之前弱依附元件的用戶端必須能 導致這些依附元件無法使用
  • rights:(選用array of string) (僅限 directory) 適用的最高目錄權限 提供的目錄能力
  • subdir:(選用 string) (僅限 directory) 來源目錄中子目錄的相對路徑 具備轉送能力
  • event_stream:(非必要) string or array of strings (僅限 event_stream) 提供的事件串流名稱。
  • scope:(非必要的 string or array of strings) (僅限 event_stream) 定義時,事件串流只會包含與 元件。
  • availability:(選用 string) availability (選用):預期此能力可用性的預期情況。受影響的國家/地區 建構時間和執行階段路徑驗證。下列其中一項:

    • required (預設):必要的依附元件,來源必須存在並提供。使用 此優惠適用於此優惠目標必須能正常運作的情況。
    • optional:選用的依附元件。如果優惠目標正常運作,請使用這個範本 無論是否具備這項能力目標不得包含 required 依附元件 技術。這項優惠的最終來源必須是 void 或實際元件。
    • same_as_target:這項能力的可用性預期將與 目標。如果目標需要能力,則這個欄位會設為 required。 如果目標包含能力上的選用依附元件,則該欄位會設為 optional
    • transitional:類似 optional,但容許缺少來源。使用這份草稿 ,避免在多步驟程式碼變更的過渡期間發生驗證錯誤。

    詳情請參閱 availability [供應情形] 說明文件。

  • source_availability:(非必要string) 是否必須提供這項優惠的來源。下列其中一項:

    • required (預設):必須在這個資訊清單中定義來源 (from)。
    • unknown:如果優惠的來源 (from),這項優惠的來源將改寫為void 包含處理後,就不會在這個資訊清單中定義。

範例:

offer: [
    {
        protocol: "fuchsia.logger.LogSink",
        from: "#logger",
        to: [ "#fshost", "#pkg_cache" ],
        dependency: "weak",
    },
    {
        protocol: [
            "fuchsia.ui.app.ViewProvider",
            "fuchsia.fonts.Provider",
        ],
        from: "#session",
        to: [ "#ui_shell" ],
        dependency: "strong",
    },
    {
        directory: "blobfs",
        from: "self",
        to: [ "#pkg_cache" ],
    },
    {
        directory: "fshost-config",
        from: "parent",
        to: [ "#fshost" ],
        as: "config",
    },
    {
        storage: "cache",
        from: "parent",
        to: [ "#logger" ],
    },
    {
        runner: "web",
        from: "parent",
        to: [ "#user-shell" ],
    },
    {
        resolver: "full-resolver",
        from: "parent",
        to: [ "#user-shell" ],
    },
    {
        event_stream: "stopped",
        from: "framework",
        to: [ "#logger" ],
    },
],

facets

object (選填)

含有元件可能根據本身用途解譯的中繼資料。元件 這個架構並未強制執行任何結構定義,但第三方可能會預期其商情項目 符合特定結構定義

config

object (選填)

元件定義的設定結構定義。每個鍵都代表一個欄位 在結構定義中

設定欄位是 JSON 物件,且必須定義 type,可以是以下其中一個值: 下列字串: booluint8int8uint16int16uint32int32uint64int64stringvector

範例:

config: {
    debug_mode: {
        type: "bool"
    },
}

根據預設,欄位會從元件的套件解析完畢。為了可以更改 需要 mutability 指定碼

範例:

config: {
    verbose: {
        type: "bool",
        mutability: [ "parent" ],
    },
},

目前支援 "parent" 是唯一支援的可變動性指定碼。

字串必須將 max_size 屬性定義為非零的整數。

範例:

config: {
    verbosity: {
        type: "string",
        max_size: 20,
    }
}

向量必須將 max_count 屬性設為非零的整數。向量也必須將 element 屬性為 JSON 物件,用來說明 向量。向量可包含布林值、整數及字串,但不得包含其他 建立向量

範例:

config: {
    tags: {
        type: "vector",
        max_count: 20,
        element: {
            type: "string",
            max_size: 50,
        }
    }
}