Fuchsia 來源樹

本節將介紹 Fuchsia 來源的機構 以及用來管理開放原始碼專案的工具

原始碼管理

Fuchsia 使用 jiri 工具管理 Fuchsia 專案中使用 Git 存放區。也會同步處理 原始碼中的 全域整合資訊清單和 提供了復原 Fuchsia 變更的必要設施。全球 整合是定義各種機器學習模型目前狀態的中央帳本 Fuchsia 樹狀結構中。

您需透過 XML 搭配 import 指令,初始化本機的 Jiri 結帳 資訊清單,以宣告所有存放區及其組織方式。 預設全域整合資訊清單的匯入內容如下:

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>

在開發機器上完成本機結帳之後,jiri 就能提取 只要使用單一指令,即可隨時存取 Global Integration 的最新異動:

jiri update

原始碼版面配置

Fuchsia 是大型的開放原始碼專案。如同任何大型軟體專案 很容易就會迷失方向,這又可能沒有發展藍圖。本章節包含 Fuchsia 當地結帳流程總覽,其中包含各種元素的摘要 過程中可發現的資訊包括:

path 說明
boards 包含所有預設面板 設定,由 Fuchsia 團隊支援及維護。
build Fuchsia 的共用設定和預設範本 建構系統
bundles 頂層版本目標標籤群組,通常包含在 不同的是建構設定請參閱套裝組合 ,掌握更多詳細資訊。
docs Fuchsia 說明文件,包括 Fuchsia.dev 開發人員網站的來源資料。
examples 展示 Fuchsia 各面向的軟體元件範例 平台。
products 內含所有預設產品 設定,由 Fuchsia 團隊支援及維護。
scripts 提供多種開發人員工具,可簡化 Fuchsia 來源樹狀結構的操作流程。 包括 fx 工作流程中使用的子指令。
sdk 包含 Fuchsia 平台 API 的來源,包括 FIDL 通訊協定定義 和建構目標會使用用於建立 Fuchsia SDK 發行版封存檔。
src Fuchsia 的原始碼,包括執行中的元件、服務和工具 並在目標裝置上顯示相應的內容這是花的樣子
tools 紫紅色 在主體機器上執行的開發人員工具
vendor 用於保留供應商特定二進位檔和自訂設定的預留位置 建構系統支援搜尋設定檔 定義於 vendor/productsvendor/boards 以建構 適用於供應商特定裝置目標的 Fuchsia。
zircon Fuchsia Zircon 的原始碼 核心,包括核心。

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 VM 訪客的管理程序支援。
src/zircon 用於與 Zircon 核心互動的程式庫。

練習:瀏覽來源樹狀結構

在本練習中,您將瞭解本地的 Fuchsia 來源樹結帳程序 載入環境的指令列工具熟悉 這些工具將有助於您提高生產力, 程式碼集

搜尋樹狀結構

如果不確定要從哪裡著手,可以使用 fd 公用程式執行模糊測試 搜尋目錄,然後前往搜尋結果的位置。

執行下列指令,為 session_manager 執行 fd 搜尋:

fd session_manager

這個公用程式會列印數個可能的選項供您選擇。請選取選項 按 2 前往 src/session/bin/session_manager

[1] src/session/bin/session_manager
[2] src/session/tests/session_manager

這樣您可以輕鬆找到並瀏覽所需的程式碼 這些研究有助於我們找出 能引導後續作業的標準如果搜尋條件夠具體,可以傳回單一結果,fd 會 即可自動導航。

執行下列指令,搜尋 Fuchsia 的「archivist」 用於收集記錄檔資料、快照和生命週期事件的診斷服務:

fd archivist

請注意,指令實際上並未輸出任何結果,但您的運作中 目錄已自動設為 src/diagnostics/archivist

這對於快速上手非常有用,但建議您先完成以下工作 在需要搜尋檔案的 Fuchsia 樹狀結構中搜尋。

在來源檔案中搜尋

如要在特定來源檔案中搜尋樹狀結構,請使用 fx grep 指令。

在樹狀結構中執行搜尋,尋找 hello-world 範例的參照 使用 fx grep

fx grep hello-world

這會傳回整個樹狀結構的參照清單,因為 範例參考了說明文件、建構檔案和其他來源。

您可以使用篩選器修正搜尋範圍,縮小通訊協定範圍 定義再次執行相同搜尋,但這次僅適用於 GN 版本檔案 使用篩選器:

fx grep hello-world -- build

結果會指出通訊協定的定義位於 examples/hello_world。您可將這些資訊與「fd」結合, 導航:

fd hello_world