在本部分中,您将了解 Fuchsia 源的结构 以及用于管理开源项目的工具。
源代码管理
Fuchsia 使用 jiri 工具来管理 git 代码库。它会同步 使用 全局集成清单和 提供了必要的工具,以便将更改传回 Fuchsia。全球 集成是一个中央分类记录器, Fuchsia 树中的项目。
<ph type="x-smartling-placeholder">您可以使用带有 XML 的 import
命令初始化本地 jiri 结账
清单,用于声明所有代码库及其组织方式。通过
import 如下所示:
jiri import -name=integration flower https://fuchsia.googlesource.com/integration
此命令会将清单添加到本地 .jiri_manifest
文件中的
本地结账页。
<manifest>
<imports>
<import manifest="flower" name="integration"
remote="https://fuchsia.googlesource.com/integration" />
</imports>
</manifest>
<ph type="x-smartling-placeholder">
在开发机器上初始化本地签出之后,Jriri 可以拉取 通过一条命令随时了解 Global Integration 的最新更改:
jiri update
源代码布局
Fuchsia 是一个大型开源项目。与任何大型软件项目一样 在没有路线图指导的情况下,很容易迷失方向。此部分包含 本地 Fuchsia 结账流程概览,以及各种元素的摘要 在此过程中可能会发现:
path | 说明 |
---|---|
boards |
包含所有默认面板 配置由 Fuchsia 团队支持和维护。 |
build |
适用于 Fuchsia 的共享配置和默认模板 构建系统。 |
bundles |
build 目标标签的顶层分组,通常包含在 build 配置请参阅套装 了解详情。 |
docs |
Fuchsia 文档,包括 Fuchsia.dev 开发者网站的源资料。 |
examples |
展示 Fuchsia 各个方面的软件组件示例 平台。 |
products |
包含所有默认商品 配置由 Fuchsia 团队支持和维护。 |
scripts |
各种开发者工具可简化 Fuchsia 源代码树的使用, 包括 fx 工作流中使用的子命令。 |
sdk |
包含 Fuchsia 平台 API 的来源,包括 FIDL 协议定义 以及用于创建 Fuchsia SDK 分发归档的构建目标。 |
src |
Fuchsia 的源代码,包括运行 在目标设备上的表现。这是花朵的茎。 |
tools |
紫红色 开发者工具)。 |
vendor |
为以下项的供应商专用二进制文件和自定义项预留位置:
产品构建。构建系统支持发现配置文件
在 vendor/products 和 vendor/boards 下构建
Fuchsia,用于供应商专用设备目标。
|
zircon |
Fuchsia 的锆石的源代码 核心),包括内核。 |
Fuchsia 平台的源代码进一步细分为各种 和组件和服务下方并未列出所有情况 但可能会提供一些可以开始探索的有趣位置:
path | 说明 |
---|---|
src/bringup |
核心系统二进制文件,用于启动系统的用户空间环境。 |
src/camera |
针对摄像头设备驱动程序的支持服务。 |
src/cobalt |
用于记录、收集和分析指标的 Fuchsia 服务。 |
src/connectivity |
网络协议支持和设备驱动程序。 |
src/developer |
在目标上运行的开发者工具,包括 ffx。 |
src/devices |
适用于常见硬件子系统的设备驱动程序支持库。 |
src/diagnostics |
诊断支持服务,如日志记录、崩溃报告、快照 和统计信息。 |
src/factory |
实现对出厂配置数据存储的组件。 |
src/fonts |
内置系统字体的提供程序。 |
src/graphics |
针对显示设备驱动程序的支持服务。 |
src/identity |
用户账号处理和身份令牌管理。 |
src/media |
媒体编解码器和播放服务。 |
src/power |
电源管理服务。 |
src/starnix |
POSIX 兼容性库。 |
src/recovery |
恢复系统和恢复出厂设置服务。 |
src/security |
安全政策和分析工具。 |
src/session |
用于管理会话组件的基础架构和工具。 |
src/storage |
对filesystems和 音量管理 |
src/sys |
组件框架 和相关服务 管理。 |
src/tests |
平台端到端 (E2E) 集成测试。 |
src/ui |
用于支持图形界面 (GUI) 的服务,包括 Scenic。 |
src/virtualization |
为虚拟机客户机提供 Hypervisor 支持。 |
src/zircon |
用于与 Zircon 内核交互的库。 |
练习:浏览源代码树
在本练习中,您将探索 Fuchsia 源代码树的本地签出 使用环境提供的命令行工具。逐渐熟悉 能够帮助您开始为创新成果贡献力量, 代码库。
<ph type="x-smartling-placeholder">搜索树
如果您不确定从何处开始,可以使用 fd
实用程序执行模糊测试
搜索目录,然后导航到搜索结果的位置。
运行以下命令以对 session_manager
运行 fd
搜索:
fd session_manager
<ph type="x-smartling-placeholder">
该实用程序会显示一些可能的选项供您选择。选择选项
2 以导航到 src/session/bin/session_manager
:
[1] src/session/bin/session_manager
[2] src/session/tests/session_manager
这样你就能轻松找到并浏览
工作。如果搜索足够具体,可以返回单个结果,fd
将
即可自动转到相应页面
运行以下命令以搜索 archivist
- Fuchsia 的
用于收集日志数据、快照和生命周期事件的诊断服务:
fd archivist
请注意,该命令实际上并未输出任何结果,
目录已自动设为 src/diagnostics/archivist
!
这有助于您顺利上手,但您可能需要注意以下几点: 在需要在文件内搜索的 Fuchsia 树中搜索。
在源文件中搜索
要在特定源文件中搜索树中的模式,请使用
fx grep
命令。
在树中进行搜索,查找对 hello-world
示例的引用
使用 fx grep
:
fx grep hello-world
这将从整个树中返回一个很长的引用列表, 文档、build 文件和其他来源中都引用了示例。
你可以使用过滤条件缩小搜索范围,缩小搜索范围 定义。再次执行相同的搜索,但这次仅在 GN build 文件中执行相同的搜索 :
fx grep hello-world -- build
结果表明协议定义位于
examples/hello_world
。您可以将这些信息与 fd
结合使用,
导航到那里:
fd hello_world
<ph type="x-smartling-placeholder">