0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OpenHarmony開(kāi)發(fā)板解析:【 部件配置規(guī)則】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-09 15:15 ? 次閱讀

部件

部件配置規(guī)則

部件的bundle.json放在部件源碼的根目錄下。以泛sensor子系統(tǒng)的sensor服務(wù)部件為例,部件屬性定義描述文件字段說(shuō)明如下:

開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

{
    "name": "@ohos/sensor_lite",		                                 # HPM部件英文名稱(chēng),格式"@組織/部件名稱(chēng)"
    "description": "Sensor services",		                             # 部件功能一句話描述	
    "version": "3.1",			                                         # 版本號(hào),版本號(hào)與OpenHarmony版本號(hào)一致
    "license": "MIT",			                                         # 部件License
    "publishAs": "code-segment",		                                 # HPM包的發(fā)布方式,當(dāng)前默認(rèn)都為code-segment
    "segment": {										
        "destPath": ""			
    },					                                                 # 發(fā)布類(lèi)型為code-segment時(shí)為必填項(xiàng),定義發(fā)布類(lèi)型code-segment的代碼還原路徑(源碼路徑)			
    "dirs": {"base/sensors/sensor_lite"},	                             # HPM包的目錄結(jié)構(gòu),字段必填內(nèi)容可以留空
    "scripts": {},			                                             # HPM包定義需要執(zhí)行的腳本,字段必填,值非必填
    "licensePath": "COPYING",			
    "readmePath": {
        "en": "README.rst"
    },
    "component": {			                                             # 部件屬性
        "name": "sensor_lite",			                                 # 部件名稱(chēng)		
        "subsystem": "",		                                         # 部件所屬子系統(tǒng)
        "syscap": [],				                                     # 部件為應(yīng)用提供的系統(tǒng)能力
        "features": [],                                                  # 部件對(duì)外的可配置特性列表,一般與build中的sub_component對(duì)應(yīng),可供產(chǎn)品配置
        "adapted_system_type": [],		                                 # 輕量(mini)小型(small)和標(biāo)準(zhǔn)(standard),可以是多個(gè)
        "rom": "92KB",                                                   # 部件ROM值
        "ram": "~200KB",                                                 # 部件RAM估值       
        "deps": {                      
        "components": [                                                  # 部件依賴(lài)的其他部件
          "samgr_lite",
          "ipc_lite"
        ],
        "third_party": [                                                 # 部件依賴(lài)的三方開(kāi)源軟件
          "bounds_checking_function"
        ],
        "hisysevent_config": []                                          # 部件HiSysEvent打點(diǎn)配置文件編譯入口
      }         
        "build": {				                                         # 編譯相關(guān)配置
            "sub_component": [
                ""//base/sensors/sensor_lite/services:sensor_service"",  # 部件編譯入口
            ],			                                                 # 部件編譯入口,模塊在此處配置
            "inner_kits": [],						                     # 部件間接口
            "test": []							                         # 部件測(cè)試用例編譯入口
        }
    }
 }

注意 :lite上舊的部件在build/lite/components目錄下對(duì)應(yīng)子系統(tǒng)的json文件中,路徑規(guī)則為: {領(lǐng)域}/{子系統(tǒng)}/{部件} ,部件目錄樹(shù)規(guī)則如下:

component
├── interfaces
│   ├── innerkits  # 系統(tǒng)內(nèi)接口,部件間使用
│   └── kits       # 應(yīng)用接口,應(yīng)用開(kāi)發(fā)者使用
├── frameworks     # framework實(shí)現(xiàn)
├── services       # service實(shí)現(xiàn)
└── BUILD.gn       # 部件編譯腳本

部件配置中需要配置部件的名稱(chēng)、源碼路徑、功能簡(jiǎn)介、是否必選、編譯目標(biāo)、RAM、ROM、編譯輸出、已適配的內(nèi)核、可配置的特性和依賴(lài)等屬性定義。

注意 :部件配置中HiSysEvent打點(diǎn)配置文件使用說(shuō)明,請(qǐng)參考文檔[HiSysEvent打點(diǎn)配置]

新增部件時(shí)需要在對(duì)應(yīng)子系統(tǒng)json文件中添加相應(yīng)的部件定義。產(chǎn)品所配置的部件必須在某個(gè)子系統(tǒng)中被定義過(guò),否則會(huì)校驗(yàn)失敗。

新增并編譯部件

  1. 添加部件。 本節(jié)以添加一個(gè)自定義的部件為例,描述如何編譯部件,編譯庫(kù)、編譯可執(zhí)行文件等。
    示例部件partA由feature1、feature2和feature3組成,feature1的編譯目標(biāo)為一個(gè)動(dòng)態(tài)庫(kù),feature2的目標(biāo)為一個(gè)可執(zhí)行程序,feature3的目標(biāo)為一個(gè)etc配置文件。
    示例部件partA的配置需要添加到一個(gè)子系統(tǒng)中,本次示例將添加到subsystem_examples子系統(tǒng)中(subsystem_examples子系統(tǒng)定義在test/examples/目錄)。
    示例部件partA的完整目錄結(jié)構(gòu)如下:

    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:編寫(xiě)動(dòng)態(tài)庫(kù)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:編寫(xiě)可執(zhí)行文件gn腳本test/examples/partA/feature2/BUILD.gn,示例如下:

    ohos_executable("helloworld_bin") {
      sources = [
        "src/helloworld2.cpp"
      ]
      include_dirs = [ "include" ]
      deps = [                                # 依賴(lài)部件內(nèi)模塊
        "../feature1:helloworld_lib"
      ]
      external_deps = [ "partB:module1" ]     # (可選)如果有跨部件的依賴(lài),格式為“部件名:模塊名”
      install_enable = true                   # 可執(zhí)行程序缺省不安裝,需要安裝時(shí)需要指定
      part_name = "partA"
    }
    

    示例3:編寫(xiě)etc模塊gn腳本test/examples/partA/feature3/BUILD.gn,示例如下:

    ohos_prebuilt_etc("feature3_etc") {
      source = "src/config.conf"
      relative_install_dir = "init"    #可選,模塊安裝相對(duì)路徑,相對(duì)于默認(rèn)安裝路徑;默認(rèn)在/system/etc目錄
      part_name = "partA"
    }
    

    示例4:在部件的bundle.json中添加模塊配置:test/examples/bundle.json。每個(gè)部件都有一個(gè)bundle.json配置文件,在部件的根目錄下。示例見(jiàn):[部件的bundle.json]

  2. 將部件添加到產(chǎn)品配置中。 在產(chǎn)品的配置中添加部件,產(chǎn)品對(duì)應(yīng)的配置文件://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",                              # 部件所屬子系統(tǒng)
            "components": [
              {
                "component": "partA",                                       # 部件名稱(chēng)
                "features": []                                              # 部件對(duì)外的可配置特性列表
              }
            ]
          },
        ······
      }
      
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

搜狗高速瀏覽器截圖20240326151344.png
從中可以看出產(chǎn)品名稱(chēng)、芯片廠家等;inherit指出依賴(lài)的通用組件;subsystems指出通用組件以外的部件。

在產(chǎn)品配置文件中添加 "subsystem_examples:partA",表示該產(chǎn)品中會(huì)編譯并打包partA到版本中。

  1. 編譯。 主要有兩種編譯方式,[命令行方式和hb方式],下面以命令行方式為例:
    部件可以使用"--build-target 部件名"進(jìn)行單獨(dú)編譯,以編譯產(chǎn)品hispark_taurus_standard的musl部件為例,編譯命令如下:

    ./build.sh --product-name hispark_taurus_standard --build-target musl --ccache
    

    也可以編譯相應(yīng)產(chǎn)品,以編譯hispark_taurus_standard為例,編譯命令如下:

    ./build.sh --product-name hispark_taurus_standard --ccache
    
  2. 編譯輸出。 編譯所生成的文件都?xì)w檔在out/hispark_taurus/目錄下,結(jié)果鏡像輸出在 out/hispark_taurus/packages/phone/images/ 目錄下。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4771

    瀏覽量

    96166
  • 鴻蒙
    +關(guān)注

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42485
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1946

    瀏覽量

    29736
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3548

    瀏覽量

    15737
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony鴻蒙南向開(kāi)發(fā)案例:【智能貓眼(基于Hi3518開(kāi)發(fā)板)】

    基于Hi3518開(kāi)發(fā)板,使用開(kāi)源OpenHarmony開(kāi)發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3518開(kāi)發(fā)板中攝像頭獲取的數(shù)據(jù)通過(guò)RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。
    的頭像 發(fā)表于 04-22 15:46 ?1669次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鴻蒙</b>南向<b class='flag-5'>開(kāi)發(fā)</b>案例:【智能貓眼(基于Hi3518<b class='flag-5'>開(kāi)發(fā)板</b>)】

    鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng)編寫(xiě)“Hello World”程序】 (基于RK3568開(kāi)發(fā)板

    源碼],創(chuàng)建RK3568開(kāi)發(fā)板的源碼工程。 示例目錄 拉取openharmony項(xiàng)目代碼,在代碼根目錄創(chuàng)建sample子系統(tǒng)文件夾,在子系統(tǒng)目錄下創(chuàng)建hello部件文件夾,hello文件夾中創(chuàng)建
    的頭像 發(fā)表于 04-24 17:32 ?574次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>【標(biāo)準(zhǔn)系統(tǒng)編寫(xiě)“Hello World”程序】 (基于RK3568<b class='flag-5'>開(kāi)發(fā)板</b>)

    鴻蒙OpenHarmony開(kāi)發(fā)板:【產(chǎn)品配置規(guī)則

    產(chǎn)品解決方案為基于開(kāi)發(fā)板的完整產(chǎn)品,主要包含產(chǎn)品對(duì)OS的適配、部件拼裝配置、啟動(dòng)配置和文件系統(tǒng)配置等。產(chǎn)品解決方案的源碼路徑
    的頭像 發(fā)表于 05-09 10:32 ?847次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b>:【產(chǎn)品<b class='flag-5'>配置</b><b class='flag-5'>規(guī)則</b>】

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【 模塊配置規(guī)則

    編譯子系統(tǒng)通過(guò)模塊、部件和產(chǎn)品三層配置來(lái)實(shí)現(xiàn)編譯和打包。模塊就是編譯子系統(tǒng)的一個(gè)目標(biāo),包括(動(dòng)態(tài)庫(kù)、靜態(tài)庫(kù)、配置文件、預(yù)編譯模塊等)。模塊要定義屬于哪個(gè)部件,一個(gè)模塊只能歸屬于一個(gè)
    的頭像 發(fā)表于 05-10 14:39 ?666次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>解析</b>:【 模塊<b class='flag-5'>配置</b><b class='flag-5'>規(guī)則</b>】

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【Rust模塊配置規(guī)則和指導(dǎo)】

    Rust是一門(mén)靜態(tài)強(qiáng)類(lèi)型語(yǔ)言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開(kāi)發(fā)等優(yōu)勢(shì)。Rust官方也使用Cargo工具來(lái)專(zhuān)門(mén)為Rust代碼創(chuàng)建工程和構(gòu)建編譯。 OpenHarmony為了集成
    的頭像 發(fā)表于 05-10 11:32 ?1061次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>解析</b>:【Rust模塊<b class='flag-5'>配置</b><b class='flag-5'>規(guī)則</b>和指導(dǎo)】

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【芯片解決方案】

    芯片解決方案是指基于某款開(kāi)發(fā)板的完整解決方案,包含驅(qū)動(dòng)、設(shè)備側(cè)接口適配、開(kāi)發(fā)板sdk等。
    的頭像 發(fā)表于 05-10 15:42 ?957次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>解析</b>:【芯片解決方案】

    鴻蒙OpenHarmony南向/北向快速開(kāi)發(fā)教程-迅為RK3568開(kāi)發(fā)板

    大家期待已久的迅為RK3568開(kāi)發(fā)板終于迎來(lái)了鴻蒙4.1系統(tǒng)的強(qiáng)勢(shì)支持!想知道如何實(shí)現(xiàn)快速開(kāi)發(fā)學(xué)習(xí)嗎?跟著我們一起來(lái)探索吧! 迅為RK3568開(kāi)發(fā)板: 想象一下,你手中的RK3568
    發(fā)表于 07-23 10:44

    迅為RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)固件燒寫(xiě)步驟

    1、迅為RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)固件燒寫(xiě)首先拷貝燒寫(xiě)器(燒寫(xiě)器在光盤(pán)資料“iTOP-3568 開(kāi)發(fā)板\01_【iTOP-RK3568
    發(fā)表于 08-26 17:45

    openharmony開(kāi)發(fā)openharmony開(kāi)發(fā)板

    現(xiàn)在市面上支持OpenHarmony開(kāi)發(fā)板已經(jīng)非常多了,OpenHarmony不僅僅只能在海思系列芯片上運(yùn)行,比較常見(jiàn)的有HiSpark、小熊派系列。這些開(kāi)發(fā)板都是基于海思的Hi38
    的頭像 發(fā)表于 06-24 09:03 ?3490次閱讀

    OpenHarmony開(kāi)發(fā)板適配經(jīng)驗(yàn)分享--王城

    OpenHarmony開(kāi)發(fā)板適配經(jīng)驗(yàn)分享 審核編輯:金巧
    的頭像 發(fā)表于 12-28 14:46 ?1629次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b>適配經(jīng)驗(yàn)分享--王城

    開(kāi)發(fā)板如何適配OpenHarmony 3.2

    科技基于RK3568設(shè)計(jì)的HCPAD-100開(kāi)發(fā)板以及基于RK3566設(shè)計(jì)的中控屏HongzPad2022在OpenHarmony 3.2 Beta5版本上的適配過(guò)程。 涉及到開(kāi)發(fā)板的添加/u-boot /linux-5.10/
    的頭像 發(fā)表于 04-04 01:35 ?1281次閱讀

    OpenHarmony鴻蒙南向開(kāi)發(fā)案例:【智能貓眼(基于3516開(kāi)發(fā)板)】

    基于Hi3516開(kāi)發(fā)板,使用開(kāi)源OpenHarmony開(kāi)發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3516開(kāi)發(fā)板中攝像頭獲取的數(shù)據(jù)通過(guò)RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。
    的頭像 發(fā)表于 04-19 22:01 ?427次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鴻蒙</b>南向<b class='flag-5'>開(kāi)發(fā)</b>案例:【智能貓眼(基于3516<b class='flag-5'>開(kāi)發(fā)板</b>)】

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【系統(tǒng)能力配置規(guī)則

    SysCap(SystemCapability,系統(tǒng)能力)是部件開(kāi)發(fā)者提供的接口的集合。
    的頭像 發(fā)表于 05-11 10:10 ?312次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>解析</b>:【系統(tǒng)能力<b class='flag-5'>配置</b><b class='flag-5'>規(guī)則</b>】

    瑞芯微RK3566鴻蒙開(kāi)發(fā)板OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo)

    本文OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo),適用鴻蒙系統(tǒng)軟件開(kāi)發(fā)測(cè)試的新手入門(mén)學(xué)習(xí)課程,設(shè)備為觸覺(jué)智能的瑞芯微RK3566開(kāi)發(fā)板,型號(hào)Purple Pi OH。是Laval官
    的頭像 發(fā)表于 09-10 11:56 ?123次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>OpenHarmony</b>標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo)

    瑞芯微RK3568鴻蒙開(kāi)發(fā)板OpenHarmony系統(tǒng)修改cfg文件權(quán)限方法

    本文適用于OpenHarmony開(kāi)源鴻蒙系統(tǒng)修改cfg文件權(quán)限方法,深圳觸覺(jué)智能研發(fā)的RK3566、RK3568、RK3588等開(kāi)發(fā)板、主板等產(chǎn)品均適用此教程
    的頭像 發(fā)表于 09-11 13:26 ?420次閱讀
    瑞芯微RK3568<b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>OpenHarmony</b>系統(tǒng)修改cfg文件權(quán)限方法