整合商開發套件 (IDK)

這個資料夾包含 Fuchsia Integrator Development Kit (IDK) 開發相關資訊。

下載 Fuchsia IDK

支援

請注意,Fuchsia 目前不支援公開使用 是 Fuchsia IDKIDK 中的 API 隨時可能變更,恕不另行通知。

策略遊戲

Fuchsia 採用模組化的方式,向開發人員公開 Fuchsia 平台。

這項策略的核心是整合商開發套件 (IDK), 「做出變更」一文中提及的 Git 存放區。 這個 IDK 包含開始建構所需的少數程式庫和工具 以及執行指定 Fuchsia 的程式 IDK 的內容代表 Fuchsia 最基本的合約 提供給潛在開發人員的平台開發人員

Fuchsia IDK 不適合立即使用。 不包含任何工具鍊或建構系統的參照,實際上 不需要任何特定的例項。 雖然這可能只是缺點,但實際上確實是功能 這是分層做法,用來建構完善的 SDK。 雖然 IDK 並未與特定建構系統連結,但 IDK 包含 中繼資料,以便支援多種版本 以便產生各種 SDK 發行版本 將 IDK 與這些分佈分離清楚 提供極具彈性的發布配置和疊代週期

這份說明文件著重介紹 IDK。 IDK 中包含的文件 (由 //idk/docs 代管) 包含 有關如何使用 IDK 的資訊。 最後,//scripts/sdk 底下有一些 SDK 發行版本的例子。 最值得注意的是,它包含產生工作區的前端 使用 Bazel 啟用 Fuchsia 開發作業,這樣就能 。

IDK 有哪些內容?

根據預設,您無法在 Fuchsia 樹狀結構中將一段程式碼新增至任何 IDK: 。此外,這項決定是 在程式碼的建構檔案中進行本機編碼此動作是為 原因:

  1. 開發人員修改程式碼時,需要留意這方面的潛在影響 盡早向外部客戶放送廣告
  2. 將程式碼發布到 IDK 可能需要開發人員額外輸入內容, 告知建構系統有關如何在 SDK 中正確加入程式碼。
  3. 瞭解程式碼是否包含在 IDK 中 系統就會對該程式碼執行額外的檢查,確保符合 IDK 規範 標準。

如要在 IDK 中使用,一段程式碼必須符合一組 標準與規範

基礎設施

SDK 建立管道包含兩個部分:

  1. 後端,使用建構系統產生內含 編譯成果、來源檔案和中繼資料
  2. 前端,會套用於該 tarball 轉換,並轉換成 例如:SDK 發行版

後端

後端真的只是建構系統的特殊用途。在其他 也就是執行 SDK 後端,可傳遞一組正確的引數給 Fuchsia 建構系統 依序產生 設定版面配置。 如要瞭解後端的內部運作方式,請參閱本文

後端不僅會產生 IDK,還能做為控制機制 API 革新IDK 公開的 API 介面會擷取成一組 代表其元素的參考檔案:對此介面的修改需要 明確獲得開發人員認可,只要更新相關參考資料 檔案,其最新版本也會由後端產生。模型的用途 可及早偵測並防止意外變更 IDK 同時提供相關工具,方便我們進行觀察及審查 API 介面的演變

前端

「前端」一詞用於描述任何擷取 Fuchsia IDK 的程序 封存及套用轉換

在 Fuchsia 樹狀結構中,系統會使用前端來產生 SDK 發行版本,例如就能建立 Bazel 可用的工作區

前端也可用於調整 Fuchsia IDK 封存,以用於 舉例來說,為 對部署系統而言封存內容中包含豐富的中繼資料 以便進行這類處理

IDK 和 IDK 外掛程式

核心 IDK 以 //sdk:core 目標表示。 這個 IDK 可與多個 IDK 外掛程式相輔相成:

  • //sdk:e2e_testing:Fchsia 的端對端測試架構;
  • //sdk:fuchsia_dart:用於建構模組和代理程式的 Dart SDK。

這些目標在內部都是 sdk GN 範本的所有例項。

方法

產生 IDK 封存檔

建構圖表中一律會包含代表 IDK 的各種目標。 如要建構 IDK 的內容,請建構

請注意,這會產生並驗證 IDK 內容,但不會實際建構 可以建立包含這些內容的封存檔

如要建立封存檔,請執行下列指令:

fx set minimal.x64
fx build sdk:final_fuchsia_idk

系統會將產生的封存檔存放在 <outdir>/sdk/archive/fuchsia_idk.tar.gz

IDK 包含 Fuchsia 開發作業所需的主機工具。根據預設 IDK 在本機建構,僅包含目前主機的主機工具 x64 或 arm64在 x64 主機上建構 IDK 時, 也透過設定包括 arm64 主機工具:

fx 設定 minimal.x64 --args=sdk_cross_compile_host_tools=true

在 IDK 中新增內容

首先,請讓 SDK 使用該內容。方法是使用 後端說明文件中列出了一組範本。 下一步是將該內容加入現有的 IDK 定義。針對目標 //path/to/my:super_target 的作用是,將隱含的 //path/to/my:super_target_sdk 可指定 sdk 目標的依附元件。

請注意,某些內容類型需要說明狀態的 .api 來源檔案 IDK 元素的 API 欄位 這些檔案是由建構系統產生, 若要看見此類檔案的第一個版本,請讓建構系統告訴您 預期會找到該檔案,然後建立這個檔案並將檔案留空 最後再次執行建構作業:系統會再次指示 及其版本

有一些建構步驟可以驗證未取得 IDK 的內容 卻意外修改。未經確認的修改會導致建構失敗 直到相關參考檔案在原始碼樹狀結構中更新為止。 雖然在本機疊代某些公用 API 時,必須反覆更新 處理參考檔案可能非常繁瑣為了將建構錯誤轉換成警告 使用以下額外的 GN 引數進行建構:warn_no_sdk_changes=true

產生 SDK 發布版本

方法是執行前端。請參閱前端說明文件 ,掌握更多詳細資訊。