.cml
檔案包含單一 json5 物件常值,並使用下列索引鍵。
在預期字串值的情況下,一般會記錄有效值的清單。 下列字串值類型會重複使用,且必須符合特定規則。
.cml
檔案會編譯為 FIDL 線格式 (.cm
) 檔案。
字串類型
名稱
功能和元件的子項都已命名。名稱字串可以是
由下列一或多個字元組成:A-Z
、a-z
、0-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
內含可處理重複的 use
、offer
、expose
或 capabilities
的宣告,只要屬性相同,就會參照相同能力。例如:
// 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-z
、0-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-z
、0-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-z
、0-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
) 元件傳出目錄中的路徑 取得應用程式所需的能力針對
protocol
和service
,預設為/svc/${protocol}
,否則為必要。如果是
protocol
,路徑目標「必須是」管道,一般會使用 與這個能力名稱相符的通訊協定如果是
service
、directory
,路徑的目標「必須」是目錄。以
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
) 能力目標。parent
或framework
。預設為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
:刻意省略來源。只有在availability
為optional
或transitional
。
to
:(string or array of strings
) 功能目標。下列其中一項: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
,可以是以下其中一個值:
下列字串:
bool
、uint8
、int8
、uint16
、int16
、uint32
、int32
、uint64
、int64
、
string
、vector
範例:
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,
}
}
}