获取 Fuchsia 源代码

通过本文,你将了解到如何:

开始之前

我们建议您在开始之前,先运行一遍 ffx platform preflight 命令. 其中,参数 preflight 用来检测你的电脑,然后罗列出影响源码构建和模拟器运行的因素。

  • 对于 Linux 系统, 请执行以下命令:

    1. curl -sO https://storage.googleapis.com/fuchsia-ffx/ffx-linux-x64 && chmod +x ffx-linux-x64 && ./ffx-linux-x64 platform preflight
  • 对于 MacOS 系统, 请执行以下命令:

    1. curl -sO https://storage.googleapis.com/fuchsia-ffx/ffx-macos-x64 && chmod +x ffx-macos-x64 && ./ffx-macos-x64 platform preflight

前提条件

构建 Fuchsia 工程需要将 curlunzipgit 保持最新版本:

  • 对于 Linux,使用以下命令来安装或更新这些软件:

    1. sudo apt-get install curl git unzip

    提示: Fuchsia 要求 Git 使用 2.28 及以上版本.

  • 对于 macOS, 请安装 Xcode command line tools:

    1. xcode-select --install

下载 Fuchsia 源代码 {#download-fuchsia-source}

Fuchsia 的 bootstrap 脚本会创建一个名为 fuchsia 的目录, 所有从源代码仓库下载的内容都会保存在该目录下。

说明:下载 Fuchsia源代码需要你的设备拥有至少 2 GiB 的存储空间。此外, 根据你选择的 Fuchsia 构建配置不同,构建时还需要额外的 80-90 GiB 存储空间。

执行下述操作,来下载 Fuchsia 源代码:

  1. 选择一个目录,用来保存源代码:

    说明:你可以选择任意目录, 此处我们选择用户主目录

    1. cd ~
  2. 运行 bootstrap 脚本:

    1. curl -s "https://fuchsia.googlesource.com/fuchsia/+/HEAD/scripts/bootstrap?format=TEXT" | base64 --decode | bash

    这个脚本会创建一个名为 fuchsia 的文件夹来保存源代码. 下载过程最多可能需要 60 分钟.

    脚本执行过程如果出现 Invalid authentication credentials 错误,请参考 身份验证错误 来解决该问题。

设置环境变量 {#set-up-environment-variables}

Fuchsia 建议通过更新你所使用的 shell 的配置脚本来完成下述操作 (参见 更新 shell 脚本 ):

  • .jiri_root/bin 目录添加到你的 PATH 环境变量中

    Fuchsia 源代码中 .jiri_root/bin 目录包含的 jiri{:.external}fx 是 Fuchsia 工作流中至关重要的工具。jiri 用来管理 Fuchsia 项目中各个源代码仓库。fx 则用来 配置、构建、运行和调试 Fuchsia。 Fuchsia 工具链需要 jiri 被包含在 PATH 环境变量中。

  • 执行 scripts/fx-env.sh 脚本文件。

    虽然并非必要,但是执行fx-env.sh 脚本可以帮助你在终端中启用一些有用的方法。例如,它会创建一个名为 FUCHSIA_DIR 的环境变量,用来指向 Fuchsia 目录, 并且提供一个名为 fd 的命令,用来t提供目录切换时,提供针对性的自动补全功能 (请查看 fx-env.sh 文件中的注释获取更多信息)。

更新你的 shell 配置脚本 {#update-your-shell-script}

更新你的 shell 配置脚本 用以将 Fuchsia 的环境变量添加到你的终端环境中。

说明:如果你不想修改环境变量,请参考以不修改 PATH 环境变量的方式开发 Fuchsia

执行下述操作:

  1. 使用文本编辑器打开 ~/.bash_profile 文件,比如:

    说明:此处以 bash 终端 为例。 如果你使用的是 zsh,请将下面的 ~/.bash_profile 替换为 ~/.zprofile

    1. nano ~/.bash_profile
  1. ~/.bash_profile 文件中添加下述内容:

    说明:如果你修改了 Fuchsia 目录,请替换 ~/fuchsia 为你的 Fuchsia 实际保存目录。

    1. export PATH=~/fuchsia/.jiri_root/bin:$PATH
    2. source ~/fuchsia/scripts/fx-env.sh
  1. 保存文件,并退出文本编辑器。
  2. 执行下述命令来更新环境变量:
    1. source ~/.bash_profile
  1. fuchsia 目录执行下述命令,确保没有错误:

    1. jiri help
    1. fx help

下一步

前往入门指南中 配置和构建 Fuchsia ,执行下一步操作。

故障排除

身份验证错误 {#authentication-error}

如果你在 bootstrap 脚本执行过程中遇到 Invalid authentication credentials 错误, 很可能是因为你的 ~/.gitcookies 文件包含了来自 googlesource.com 的仓库的cookies,bootstrap 脚本会匿名地检出这些cookies。

为避免此错误,你可以尝试执行下述任意一个操作:

  • 根据屏幕上的指导,获取指定仓库的密码
  • .gitcookies 文件中删除有问题的 cookies。

以不修改 PATH 环境变量的方式开发 Fuchsia {#work-on-fuchsia-without-updating-your-path}

下面提供了几种更新 shell 配置脚本 的备选方案:

拷贝 Fuchsia 工具到二进制目录 {#copy-the-tool-to-your-binary-directory}

如果你不想更新环境变量,但又想要在任意目录使用 jiri 工具, 则可以把 jiri 工具拷贝到 ~/bin 目录中, 比如:

说明:如果你的 Fuchsia 源代码不在 ~/fuchsia 目录,请替换 ~/fuchsia 为源代码实际目录。

  1. cp ~/fuchsia/.jiri_root/bin/jiri ~/bin

然而,为了保证 jiri 始终为最新版本,你必须在不借助 sudo 的情况下,拥有对 ~/bin 目录的写入权限。

创建 Fuchsia 工具链接到二进制目录 {#add-a-symlink-to-your-binary-directory}

同样的,如果你不想更新环境变量,但又想使用 fx 工具, 则可以把 jiri 工具链接到 ~/bin 目录中, 比如:

说明: 如果你的 Fuchsia 源代码不在 ~/fuchsia 目录,请替换 ~/fuchsia 为源代码实际目录。

  1. ln -s ~/fuchsia/scripts/fx ~/bin

又或者,你可以直接通过绝对路径来使用 fx , 比如:

  1. ./scripts/fx help

但是, 无论哪种情况,你都需要在 PATH 环境变量中包含 jiri