本页面是贡献 Fuchsia 软件包的手册。 (从现在起简称为“packages”)传输到 Fuchsia API Surface 和 Fuchsia IDK。
具体步骤如下:
前提条件
若要将某个软件包包含在 Fuchsia SDK 中,必须创建该软件包
属于 partner
或 public
类别。(有关详情,请参阅
将 API 提升到合作伙伴类别。)
创建软件包 API Surface
软件包 API Surface 通过填充
sdk_fuchsia_package()
目标:expected_files_present
和 expected_files_exact
。
您可以使用这两个参数来强制执行以下操作:
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
}
]
}
在上面的示例中,除了 meta.far
之外,可能的 API Surface 项位于
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 Surface 项(包括 meta.far
)包括:
bin/example
lib/far.so
meta/contents
meta/fuchsia.abi/abi-revision
meta/component_name.cm
在 SDK 中为 API 贡献代码
如需向 Fuchsia API Surface 贡献软件包,请遵循以下准则:
准备向 API 委员会成员请求代码审核。
此成员可能会要求调整您的 API Surface(请参阅 针对 SDK 软件包的示例代码审核)。
为您的 SDK 软件包创建
sdk_fuchsia_package
目标 (示例)。该定位条件可能会位于正在实施的
fuchsia_package
目标值旁边 已导出。请注意声明的 API Surface,由
expected_files_exact
和expected_files_present
参数的sdk_fuchsia_package
目标。(请参阅创建软件包 API Surface。)
将
sdk_fuchsia_package
目标添加到//sdk/BUILD.gn
文件中的sdk_molecule
("core_packages") 目标 (示例)。要构建 IDK 目标(预计无法通过黄金文件检查),请执行以下操作: 运行以下命令:
fx build final_fuchsia_idk
按照打印说明复制生成的
content_checklist.json
复制到黄金文件位置确认生成的
content_checklist.json
文件涵盖了所需的 API Surface(示例)。如果没有,请调整
expected_files_exact
和expected_files_present
参数 然后重复之前的构建步骤在修复与 SDK 清单相关的任何其他更改(包括更新
//sdk/manifests/fuchsia_idk.manifest
文件)。fx build final_fuchsia_idk
(可选)进入 SDK build 目录并预览您的 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