結構化設定可讓開發人員將元件 在不同情境下設定不同的價值開發人員可透過「產品組合」 根據高階平台和產品定義結構化設定值 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定
如要依產品或建構類型變更元件設定,您必須宣告 以及說明值從產品設定中如何產生 以及產生元件設定
定義設定結構定義
元件的資訊清單中必須有已宣告的設定結構定義。例如:
...
config: {
enable_foo: { type: "bool" },
},
詳情請參閱結構化設定的說明文件。
識別產品組合設定
許多設定選項可以表示
eng
版本和非 eng
版本。
如果元件設定無法單單從建構類型推斷 透過電子郵件發送軟體組合清單,討論哪個架構應該 (請注意,這份清單是公開的,請使用 Google 內部 來討論僅限內部的設定)。決定結構定義後 將其新增至產品設定程式庫。
設定套件
決定套件名稱和元件的資訊清單資源路徑。 定義邏輯,以便在產品組件中填入設定 工具。例如,根據 類型:
use crate::subsystems::prelude::*;
use assembly_config_schema::platform_config::example_config::ExampleConfig;
pub(crate) struct ExampleSubsystemConfig;
impl DefineSubsystemConfiguration<ExampleConfig> for ExampleSubsystemConfig {
fn define_configuration(
context: &ConfigurationContext<'_>,
example_config: &ExampleConfig,
builder: &mut dyn ConfigurationBuilder,
) -> anyhow::Result<()> {
// If the build-type is eng, enabled "foo" for the example component.
builder
.package("configured_by_assembly")
.component("meta/to_configure.cm")?
.field("enable_foo", matches!(context.build_type, BuildType::Eng))?;
if example_config.include_example_aib {
builder.platform_bundle("example_assembly_bundle");
}
Ok(())
}
}
更新大小限制設定 (如有)
產生套件的設定值時,產品組合必須寫入 會輸出至建構目錄中的另一個位置,而非路徑 通常由建構系統產生進行二進位大小檢查時 建構目錄中的資訊清單路徑,因此請務必 您可在建構設定規則中更新套件的輸出路徑。
舉例來說,在由產品組合產生設定之前
session_manager
套件列在核心產品的尺寸中
限制:
{
component = "Component Framework"
src = [
# ...
"packages/base/session_manager",
]
# ...
},
使用產品組合進行設定時,session_manager
現在必須
大小限制指定為:
{
component = "Component Framework"
pkgs = [
# ...
"session_manager",
]
# ...
},