使用開發人員覆寫值組合 Fuchsia 產品

在某些情況下,您可能會想要覆寫 Fuchsia 產品的設定。

使用組態覆寫

如何開始使用開發人員覆寫值進行組合:

  1. 在 Fuchsia 檢查中建立 //local/BUILD.gn 檔案:

    //local.BUILD.gn 檔案可能如下所示:

    import("//build/assembly/developer_overrides.gni")
    
    assembly_developer_overrides("my_overrides") {
        kernel = {
            command_line_args = ["foo"]
        }
    }
    

    以下是 BUILD.gn 檔案的內容:

    • 組態開發人員覆寫值的名稱為 my_overrides。您可以使用任何有意義的 ID 做為這個欄位的值。
    • kernelcommand_line_args 皆根據平台設定的支援值。詳情請參閱 PlatformConfig
  2. 建立符合需求的 //local/BUILD.gn 檔案後,您可以設定 fx set 指令,以便使用此組裝平台設定。例如:

    fx set --assembly-override=//local:my_overrides
  3. 建構 Fuchsia:

    fx build

    您現在應該可以照常建構 Fuchsia。

此外,您還可以執行下列操作:

新增套件

在某些情況下,您可能需要在產品套件中加入其他套件。在這種情況下,您的 //local/BUILD.gn 可能會如下所示:

import("//build/assembly/developer_overrides.gni")

assembly_developer_overrides("my_custom_base_packages") {
  base_packages = [
    "//some/gn/target/for/a:package",
    "//some/other/target/for/a:package",
    "//third_party/sbase",
  ]
}

新增殼層指令

在某些情況下,您可能需要在產品設定中加入殼層元件。在這種情況下,您的 //local/BUILD.gn 可能會如下所示:

import("//build/assembly/developer_overrides.gni")

assembly_developer_overrides("my_custom_shell_commands") {
  shell_commands = [
    {
      package_name = "//third_party/sbase"
      components = [ "cp" ]
    },
  ]
}

使用 developer_only_options

在某些情況下,您可能需要使用部分 developer_only_options。這些選項可與「使用組態覆寫值」一文中所述的一般覆寫值結合使用。

在這種情況下,您的 //local/BUILD.gn 可能會如下所示:

import("//build/assembly/developer_overrides.gni")

assembly_developer_overrides("my_overrides") {
  developer_only_options = {
    all_packages_in_base = true
    netboot_mode = true
  }
}

all_packages_in_base

這個選項會將所有快取和 on_demand 套件組合套件重新導向至基本套件組合。這項功能可讓您在網路可能無法使用或無法執行套件伺服器的情況下,使用含有快取或 Universe 套件的產品映像檔。

這個選項的主要用途是在網路無法運作時,讓裝置可使用偵錯工具。

netboot_mode

這個選項會建立 ZBI (Zircon 開機映像檔),其中包含 ramdisk 內的 fvm/fxfs 映像檔,以便透過網路啟動產品。

這是先前使用 //build/images/fuchsia:netboot 產生的 netboot 組件的替代品。