使用开发者替换项组装 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。您可以为此字段使用任何有意义的标识符。
    • 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",
  ]
}

添加 Shell 命令

在某些情况下,您可能需要将 shell 组件添加到产品的配置中。在这种情况下,您的 //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 软件包集软件包重定向到基础软件包集。借助此功能,您可以在网络可能不可用或无法运行软件包服务器的情况下使用包含缓存或通用软件包的产品映像。

此选项的主要用例是在网络无法正常运行时允许在设备上使用调试工具。

netboot_mode

此选项会创建一个 ZBI(Zircon 启动映像),其中包含 ramdisk 中的 fvm/fxfs 映像,以允许产品进行网络启动。

这将取代之前使用 //build/images/fuchsia:netboot 生成的 netboot 汇编。