移植案例与原理 - HPM包描述文件bundle.json
【本文正在参与优质创作者激励】
发现各个子系统、组件、三方库目录下都添加了bundle.json,了解下该文件的用途、用法并快速记录下。
1、HPM Bundle的基本概念
Bundle是OpenHarmony中一个用来表示分发单元的术语,等同于包,一个Bundle中通常包含以下内容:
- 被分发的二进制文件(二进制类型)
- 被分发的源代码文件(源代码/代码片段类型)
- 编译脚本(发行版类型需要)
- 自身的说明文件
- bundle.json:元数据声明(名称,版本,依赖等)
- LICENSE:许可协议文本
- README.md:自述文件
- CHANGELOG.md:变更日志(可选)
一个Bundle被发布到HPM服务器(https://hpm.harmonyos.com)后,另外一些开发者就可以通过hpm包管理器下载安装使用 。一个Bundle在命名空间内拥有唯一的名称(命名格式为:@scope/name),可以进行独立的版本演进。
一个bundle包通常具有如下代码组织结构:
2、bundle.json文件格式定义
文件bundle.json一般具有如下格式,对各个属性值的解释见注释部分。因为是json文件,注意下是对象还是数组。对象由花括号{}括起来的逗号分割的成员构成,成员是字符串键和值由逗号分割的键值对组成。数组是由方括号[]括起来的一组值构成。
3、bundle.json示例
查看bundle.json文件的分布,在各个子系统,三方库下都存在。在开发板移植时,是不需要的。如果需要开发HPM包,是需要编写bundle.json文件的。可以随便打开一个查看具体的示例。
看下分布式软总线的示例openharmony\foundation\communication\dsoftbus\bundle.json。⑴处定义HPM包的名字,和⑶处的部件名称一样,都为dsoftbus_standard。⑵处的脚本,类似npm包一样,在执行hpm install时,来安装这个hpm包。⑷处设置该hpm包属于哪个子系统,已经适配的子系统类型,包含的特性等。⑸设置依赖的其他部件和三方库。⑹处设置该hpm包的编译构建信息。⑺处设置该hpm包的测试套信息。
{
⑴ "name": "@openharmony/dsoftbus_standard",
"version": "3.1.0",
"description": "dsoftbus_standard",
"publishAs": "code-segment",
"scripts": {
⑵ "install": "DEST_PATH=${DEP_BUNDLE_BASE}/foundation/communication/dsoftbus && mkdir -p $DEST_PATH && cp -r ./* $DEST_PATH"
},
"author": {},
"repository": "",
"license": "Apache License 2.0",
"component": {
⑶ "name": "dsoftbus_standard",
⑷ "subsystem": "communication",
"adapted_system_type": [
"mini",
"small",
"standard"
],
"features": [
"dsoftbus_standard_feature_conn_p2p",
"dsoftbus_standard_feature_disc_ble",
"dsoftbus_standard_feature_conn_br",
"dsoftbus_standard_feature_conn_ble"
],
"rom": "967KB",
"ram": "28MB",
⑸ "deps": {
"components": [
"libhilog",
"libipc_single",
"libwifi_sdk",
"libsystem_ability_fwk",
"libsyspara",
"samgr_proxy",
"utils_base"
],
"third_party": [
"libcoap",
"libmbedtls",
"bounds_checking_function"
]
},
⑹ "build": {
"sub_component": [
"//foundation/communication/dsoftbus/core:softbus_server",
"//foundation/communication/dsoftbus/sdk:softbus_client",
"//foundation/communication/dsoftbus/core/frame/standard/sa_profile:softbus_sa_profile",
"//foundation/communication/dsoftbus/tools:tool"
],
"inner_kits": [
{
"name": "//foundation/communication/dsoftbus/sdk:softbus_client",
"header": {
"header_files": [
"bus_center/softbus_bus_center.h",
"common/softbus_common.h",
"discovery/discovery_service.h",
"transport/session.h"
],
"header_base": "//foundation/communication/dsoftbus/interfaces/kits"
}
}
],
⑺ "test": [
"//foundation/communication/dsoftbus/tests/adapter/unittest:unittest",
"//foundation/communication/dsoftbus/tests/sdk/discovery/unittest:unittest",
"//foundation/communication/dsoftbus/tests/sdk/transmission/trans_channel:unittest",
"//foundation/communication/dsoftbus/tests/sdk/bus_center/unittest:unittest",
"//foundation/communication/dsoftbus/tests/core/authentication:unittest",
"//foundation/communication/dsoftbus/tests/core/bus_center/lnn:unittest",
"//foundation/communication/dsoftbus/tests/core/common/utils:unittest",
"//foundation/communication/dsoftbus/tests/core/connection:connectionTest",
"//foundation/communication/dsoftbus/tests/core/discovery/manager:unittest",
"//foundation/communication/dsoftbus/tests/core/transmission/trans_channel/tcp_direct:unittest"
]
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
参考站点
小结
本文介绍了HPM包描述文件bundle.json信息。因为时间关系,仓促写作,或能力限制,若有失误之处,请各位读者多多指正。感谢阅读,有什么问题,请留言。
读完之后对bundle的理解感觉又深刻了不少
好文!
这东西太好了
谢谢喜欢和支持