組合結構化設定

結構化設定可讓開發人員將元件 在不同情境下設定不同的價值開發人員可透過「產品組合」 根據高階平台和產品定義結構化設定值 此外還會從 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",
  ]

  # ...
},