本頁面將做為教戰手冊,說明如何將 Fuchsia 套件 (原本只介紹「套件」) 提供給 Fuchsia API 介面和 Fuchsia IDK。
步驟如下:
必要條件
如要納入 Fuchsia SDK 中的套件,必須在 partner
或 public
類別中建立套件。(詳情請參閱將 API 升級為合作夥伴類別。)
建立套件 API 介面
只要在 sdk_fuchsia_package()
目標中填入 expected_files_present
和 expected_files_exact
這兩個參數,即可建立套件 API 介面。
使用這兩個參數可強制執行以下操作:
expected_files_present
:套件檔案包含在 SDK 套件的資訊清單中。expected_files_exact
:套件檔案會出現在 SDK 套件的資訊清單中,且內容雜湊與在來源中檢查的內容雜湊相符。
- 「
meta/
」中的檔案 - 基本套件中的檔案
探索套件內容
在套件的資訊清單檔案中,提供組成套件的項目清單 (通常命名為 package_manifest.json
)
請參閱下方的資訊清單檔案範例:
{
"version": "1",
"repository": "fuchsia.com",
"package": {
"name": "example_package",
"version": "0"
},
"blobs": [
{
"source_path": "path/to/meta.far",
"path": "meta/",
"merkle": "CONTENT_HASH",
"size": 0
},
{
"source_path": "path/to/bin/example",
"path": "bin/example",
"merkle": "CONTENT_HASH",
"size": 0
},
{
"source_path": "path/to/shared/bar.so",
"path": "lib/bar.so",
"merkle": "CONTENT_HASH",
"size": 0
}
]
}
在上述範例中,可能的 API 介面項目 (meta.far
除外) 位於 blobs/path
實體中,包括:
bin/example
lib/far.so
ffx package far list
指令可讓您探索 meta.far
的內容,例如:
$ ffx package far list path/to/meta.far
+-------------------------------+
| path |
+===============================+
| meta/contents |
+-------------------------------+
| meta/fuchsia.abi/abi-revision |
+-------------------------------+
| meta/component_name.cm |
+-------------------------------+
這個範例中可能出現的 API 介面項目 (包括 meta.far
) 現在包括:
bin/example
lib/far.so
meta/contents
meta/fuchsia.abi/abi-revision
meta/component_name.cm
為 SDK 中的 API 貢獻心力
如要為 Fuchsia API 介面提供套件,請遵守下列規範:
準備向 API 委員會成員要求審查程式碼。
這位成員可能會要求調整 API 介面 (請參閱 SDK 套件的程式碼範例審查)。
為 SDK 套件建立
sdk_fuchsia_package
目標 (範例)。這可能位於要匯出的
fuchsia_package
目標旁邊。請留意宣告的 API 介面,以
sdk_fuchsia_package
目標的expected_files_exact
和expected_files_present
參數代表。(請參閱「建立套件 API 介面」)。
將
sdk_fuchsia_package
目標新增至//sdk/BUILD.gn
檔案中的sdk_molecule
(「core_packages」) 目標依附元件 (範例)。如要建構 IDK 目標 (預期會失敗其黃金檔案檢查),請執行下列指令:
fx build final_fuchsia_idk
按照列印的操作說明,將產生的
content_checklist.json
檔案複製到黃金檔案位置。確認產生的
content_checklist.json
檔案涵蓋所需的 API 介面 (範例)。否則,請調整
expected_files_exact
和expected_files_present
參數,並重複上一個建構步驟。修正任何其他 SDK 資訊清單相關變更 (包括更新
//sdk/manifests/fuchsia_idk.manifest
檔案) 後,建構 IDK 目標。fx build final_fuchsia_idk
(選用) 輸入 SDK 建構目錄,並預覽 SDK 套件資訊清單。
從建構目錄 (例如
out/default
) 執行下列操作:將目錄變更為
sdk/archive
,例如:cd sdk/archive
執行下列指令:
mkdir output && tar zxvf fuchsia_idk.tar.gz -C output && cd output
目標為 x64 的套件資訊清單會顯示在
packages/{PACKAGE_DISTRIBUTION_NAME}/x64/release/package_manifest.json