部件
部件配置規則
部件的bundle.json放在部件源碼的根目錄下。以泛sensor子系統的sensor服務部件為例,部件屬性定義描述文件字段說明如下:
開發前請熟悉鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
{
"name": "@ohos/sensor_lite", # HPM部件英文名稱,格式"@組織/部件名稱"
"description": "Sensor services", # 部件功能一句話描述
"version": "3.1", # 版本號,版本號與OpenHarmony版本號一致
"license": "MIT", # 部件License
"publishAs": "code-segment", # HPM包的發布方式,當前默認都為code-segment
"segment": {
"destPath": ""
}, # 發布類型為code-segment時為必填項,定義發布類型code-segment的代碼還原路徑(源碼路徑)
"dirs": {"base/sensors/sensor_lite"}, # HPM包的目錄結構,字段必填內容可以留空
"scripts": {}, # HPM包定義需要執行的腳本,字段必填,值非必填
"licensePath": "COPYING",
"readmePath": {
"en": "README.rst"
},
"component": { # 部件屬性
"name": "sensor_lite", # 部件名稱
"subsystem": "", # 部件所屬子系統
"syscap": [], # 部件為應用提供的系統能力
"features": [], # 部件對外的可配置特性列表,一般與build中的sub_component對應,可供產品配置
"adapted_system_type": [], # 輕量(mini)小型(small)和標準(standard),可以是多個
"rom": "92KB", # 部件ROM值
"ram": "~200KB", # 部件RAM估值
"deps": {
"components": [ # 部件依賴的其他部件
"samgr_lite",
"ipc_lite"
],
"third_party": [ # 部件依賴的三方開源軟件
"bounds_checking_function"
],
"hisysevent_config": [] # 部件HiSysEvent打點配置文件編譯入口
}
"build": { # 編譯相關配置
"sub_component": [
""//base/sensors/sensor_lite/services:sensor_service"", # 部件編譯入口
], # 部件編譯入口,模塊在此處配置
"inner_kits": [], # 部件間接口
"test": [] # 部件測試用例編譯入口
}
}
}
注意 :lite上舊的部件在build/lite/components目錄下對應子系統的json文件中,路徑規則為: {領域}/{子系統}/{部件} ,部件目錄樹規則如下:
component
├── interfaces
│ ├── innerkits # 系統內接口,部件間使用
│ └── kits # 應用接口,應用開發者使用
├── frameworks # framework實現
├── services # service實現
└── BUILD.gn # 部件編譯腳本
部件配置中需要配置部件的名稱、源碼路徑、功能簡介、是否必選、編譯目標、RAM、ROM、編譯輸出、已適配的內核、可配置的特性和依賴等屬性定義。
注意 :部件配置中HiSysEvent打點配置文件使用說明,請參考文檔[HiSysEvent打點配置]
新增部件時需要在對應子系統json文件中添加相應的部件定義。產品所配置的部件必須在某個子系統中被定義過,否則會校驗失敗。
新增并編譯部件
添加部件。 本節以添加一個自定義的部件為例,描述如何編譯部件,編譯庫、編譯可執行文件等。
示例部件partA由feature1、feature2和feature3組成,feature1的編譯目標為一個動態庫,feature2的目標為一個可執行程序,feature3的目標為一個etc配置文件。
示例部件partA的配置需要添加到一個子系統中,本次示例將添加到subsystem_examples子系統中(subsystem_examples子系統定義在test/examples/目錄)。
示例部件partA的完整目錄結構如下:test/examples/partA ├── feature1 │ ├── BUILD.gn │ ├── include │ │ └── helloworld1.h │ └── src │ └── helloworld1.cpp ├── feature2 │ ├── BUILD.gn │ ├── include │ │ └── helloworld2.h │ └── src │ └── helloworld2.cpp └── feature3 ├── BUILD.gn └── src └── config.conf
示例1:編寫動態庫gn腳本test/examples/partA/feature1/BUILD.gn,示例如下:
config("helloworld_lib_config") { include_dirs = [ "include" ] } ohos_shared_library("helloworld_lib") { sources = [ "include/helloworld1.h", "src/helloworld1.cpp", ] public_configs = [ ":helloworld_lib_config" ] part_name = "partA" }
示例2:編寫可執行文件gn腳本test/examples/partA/feature2/BUILD.gn,示例如下:
ohos_executable("helloworld_bin") { sources = [ "src/helloworld2.cpp" ] include_dirs = [ "include" ] deps = [ # 依賴部件內模塊 "../feature1:helloworld_lib" ] external_deps = [ "partB:module1" ] # (可選)如果有跨部件的依賴,格式為“部件名:模塊名” install_enable = true # 可執行程序缺省不安裝,需要安裝時需要指定 part_name = "partA" }
示例3:編寫etc模塊gn腳本test/examples/partA/feature3/BUILD.gn,示例如下:
ohos_prebuilt_etc("feature3_etc") { source = "src/config.conf" relative_install_dir = "init" #可選,模塊安裝相對路徑,相對于默認安裝路徑;默認在/system/etc目錄 part_name = "partA" }
示例4:在部件的bundle.json中添加模塊配置:test/examples/bundle.json。每個部件都有一個bundle.json配置文件,在部件的根目錄下。示例見:[部件的bundle.json]
將部件添加到產品配置中。 在產品的配置中添加部件,產品對應的配置文件://vendor/{product_company}/{product-name}/config.json。下面以vendor/hisilicon/hispark_taurus_standard/config.json為例:
{
"product_name": "hispark_taurus_standard",
"device_company": "hisilicon",
"device_build_path": "device/board/hisilicon/hispark_taurus/linux",
"target_cpu": "arm",
"type": "standard",
"version": "3.0",
"board": "hispark_taurus",
"inherit": [ "productdefine/common/base/standard_system.json",
"productdefine/common/inherit/ipcamera.json"
],
"enable_ramdisk": true,
"subsystems": [
{
"subsystem": "subsystem_examples", # 部件所屬子系統
"components": [
{
"component": "partA", # 部件名稱
"features": [] # 部件對外的可配置特性列表
}
]
},
······
}
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
從中可以看出產品名稱、芯片廠家等;inherit指出依賴的通用組件;subsystems指出通用組件以外的部件。
在產品配置文件中添加 "subsystem_examples:partA",表示該產品中會編譯并打包partA到版本中。
編譯。 主要有兩種編譯方式,[命令行方式和hb方式],下面以命令行方式為例:
部件可以使用"--build-target 部件名"進行單獨編譯,以編譯產品hispark_taurus_standard的musl部件為例,編譯命令如下:./build.sh --product-name hispark_taurus_standard --build-target musl --ccache
也可以編譯相應產品,以編譯hispark_taurus_standard為例,編譯命令如下:
./build.sh --product-name hispark_taurus_standard --ccache
編譯輸出。 編譯所生成的文件都歸檔在out/hispark_taurus/目錄下,結果鏡像輸出在 out/hispark_taurus/packages/phone/images/ 目錄下。
審核編輯 黃宇
-
開發板
+關注
關注
25文章
4945瀏覽量
97200 -
鴻蒙
+關注
關注
57文章
2310瀏覽量
42746 -
HarmonyOS
+關注
關注
79文章
1967瀏覽量
30021 -
OpenHarmony
+關注
關注
25文章
3660瀏覽量
16158
發布評論請先 登錄
相關推薦
評論