本節將介紹 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/products 和 vendor/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