色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

OpenHarmony 移植:build lite 配置目錄全梳理

王程 ? 來源:jf_75796907 ? 作者:jf_75796907 ? 2024-02-18 16:42 ? 次閱讀

命令行工具 hb (HarmonyOS|OpenHarmony Build 編譯構建系統(tǒng)的縮寫) 都很熟悉了。這是一個基于 gn 和 ninja 的構建系統(tǒng),以支持 OpenHarmony 組件化開發(fā)為目標,提供以下基本功能:

支持按組件拼裝產(chǎn)品并編譯。

獨立構建芯片解決方案廠商源碼。

獨立構建單個組件

工具 hb 對應的開源代碼倉為 build lite,代碼目錄如下:

```bash
build/lite
├── components                  # 組件描述文件
├── figure                      # readme中的圖片
├── hb                          # hb pip安裝包源碼
├── make_rootfs                 # 文件系統(tǒng)鏡像制作腳本
├── config                      # 編譯配置項
│   ├── component               # 組件相關的模板定義
│   ├── kernel                  # 內(nèi)核相關的編譯配置
│   └── subsystem               # 子系統(tǒng)編譯配置
├── platform                    # ld腳本
├── testfwk                     # 測試編譯框架
└── toolchain                   # 編譯工具鏈配置,包括:編譯器路徑、編譯選項、鏈接選項等

本文主要梳理 build lite 輕量級編譯構建系統(tǒng)涉及的配置目錄。有些知識點,只能從代碼中獲取,官方資料里沒有提供很詳細的說明,希望此文可以對此進行補充。

我們先看些相關的文件的代碼片段。

1、buildliteohos_var.gni

文件 buildliteohos_var.gni 定義了所有部件的全局變量,該文件還用于讀取產(chǎn)品解決方案的配置文件 config.json 中的配置項,解析為 gn 變量。該文件被文件
openharmonybuildliteconfigBUILDCONFIG.gn 包含導入 import。該文件的代碼片段如下,我們主要看下配置的目錄。⑴處表明如果產(chǎn)品解決方案的配置文件 config.json 中定義了 “vendor_adapter_dir”,則環(huán)境變量 ohos_vendor_adapter_dir、ohos_board_adapter_dir 均設置為所配置的目錄。這個是開發(fā)板適配目錄,從代碼中的注釋 “To be deleted, and will use board config.” 可以看出,不建議使用這個配置項,要刪除,只是為了兼容,還在繼續(xù)保留著吧。實現(xiàn)同樣功能的配置項是開發(fā)板配置文件 config.gni 中的配置項 board_adapter_dir,下文會詳細分析。

⑵處為產(chǎn)品適配目錄 “product_adapter_dir”,一些和產(chǎn)品相關的需要適配的部件,會把適配文件放在在配置的目錄內(nèi)。⑶處 third_party_dir 用于維護第三方軟件的目錄,雖然我們都知道 openharmony 的第三方目錄為 third_party,部分子系統(tǒng)部件需要明確的指定這個目錄。

    if (product_path != "") {
    product_config = read_file("${product_path}/config.json", "json")

    # Board selected by product.
    board_name = product_config.board
    device_company = product_config.device_company

    # Supported kernel: "liteos_a", "liteos_m", "linux"
    ohos_kernel_type = product_config.kernel_type
    if (defined(product_config.kernel_is_prebuilt)) {
        ohos_kernel_is_prebuilt = product_config.kernel_is_prebuilt
    }

    # To be deleted, and will use board config.
⑴  if (defined(product_config.vendor_adapter_dir)) {
        ohos_vendor_adapter_dir = product_config.vendor_adapter_dir
        ohos_board_adapter_dir = ohos_vendor_adapter_dir
    }
⑵  ohos_product_adapter_dir = product_config.product_adapter_dir
⑶  ohos_third_party_dir = product_config.third_party_dir
    }

2、buildliteconfigBUILDCONFIG.gn

文件 buildliteconfigBUILDCONFIG.gn 用于配置編譯構建,該文件會 import 導入產(chǎn)品解決方案和芯片開發(fā)板解決方案的配置文件。該文件會解析開發(fā)板配置文件 config.gni。如⑴所示,board_adapter_dir 為開發(fā)板適配目錄,用于存放 OHOS 部件的適配文件。

從上文已知,產(chǎn)品解決方案的配置文件 config.json 中也能配置開發(fā)板適配目錄。到這里,我們可以知道開發(fā)板配置文件 config.gni 在的這個配置選項優(yōu)先級更高,只要配置了就會覆蓋 config.json 中的配置的開發(fā)板適配目錄。這兩個配置項 ohos_board_adapter_dir 和 ohos_vendor_adapter_dir 用途是一致的,別名吧。

    import("http://build/lite/ohos_var.gni")
    import("${device_path}/config.gni")
    ......
    # Load board adapter dir from board config.
⑴  if (board_adapter_dir != "") {
    ohos_board_adapter_dir = board_adapter_dir
    ohos_vendor_adapter_dir = board_adapter_dir
    }

3、移植案例中配置文件中的目錄配置示例

看了 build lite 相關的代碼片段之后,我們看下幾個移植案例的配置文件片段。

文件 openharmonyvendorbearpibearpi_hm_nanoconfig.json 配置的目錄有三方目錄和產(chǎn)品適配目錄 third_party_dir。

   "third_party_dir": "http://device/soc/hisilicon/hi3861v100/sdk_liteos/third_party",
    "product_adapter_dir": "http://vendor/bearpi/bearpi_hm_nano/hals"

文件 openharmonyvendorgoodixgr5515_sk_iotlink_democonfig.json 配置的目錄有芯片開發(fā)板適配目錄 vendor_adapter_dir 和產(chǎn)品適配目錄 product_adapter_dir。

  "third_party_dir": "",
  "vendor_adapter_dir": "http://device/soc/goodix/gr551x/adapter",
  "product_adapter_dir": "http://vendor/goodix/gr5515_sk_iotlink_demo/hals"

在文件 openharmonydeviceboardgoodixgr5515_skliteos_mconfig.gni 中,也配置了開發(fā)板適配目錄 board_adapter_dir。兩處配置文件都進行了配置,根據(jù)上文分析 build lite 的代碼,只在 config.gni 中配置一次即可。

#Board adapter dir for OHOS components.
board_adapter_dir = "http://device/soc/goodix/gr551x/adapter"

3、product_adapter_dir 產(chǎn)品適配目錄

在開發(fā)產(chǎn)品時,有哪些子系統(tǒng)或部件需要在產(chǎn)品適配目錄里放置適配文件呢?我們在 OpenHarmony 代碼目錄下執(zhí)行 grep ohos_product_adapter_dir -rn ./,輸出如下。可以看出,當前需要適配的部件包含:security 子系統(tǒng)的 permission 權限管理部件和啟動子系統(tǒng)的 syspara_lite 系統(tǒng)參數(shù)部件。對于 permission 權限管理部件,需要在產(chǎn)品適配目錄下創(chuàng)建 security/permission_lite 目錄。對于 syspara_lite 系統(tǒng)參數(shù)部件,需要在產(chǎn)品適配目錄下創(chuàng)建 utils/sys_param,utils/token 目錄。這些目錄不能隨意命名,因為在子系統(tǒng)部件的 BUILD.gn 里寫死的。需要適配實現(xiàn)哪些文件,在分析相關的部件時提供。

./base/security/permission/services/permission_lite/pms/BUILD.gn:42:    "${ohos_product_adapter_dir}/security/permission_lite:hal_pms",
./base/security/permission/services/permission_lite/ipc_auth/BUILD.gn:25:    "${ohos_product_adapter_dir}/security/permission_lite/ipc_auth/include",
./base/startup/syspara_lite/frameworks/parameter/src/BUILD.gn:31:    deps = [ "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam" ]
./base/startup/syspara_lite/frameworks/parameter/src/BUILD.gn:54:      "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam",
./base/startup/syspara_lite/frameworks/token/BUILD.gn:30:      "$ohos_product_adapter_dir/utils/token:haltoken_shared",
./base/startup/syspara_lite/frameworks/token/BUILD.gn:47:    deps = [ "$ohos_product_adapter_dir/utils/token:hal_token_static" ]

4、board_adapter_dir 芯片開發(fā)板適配目錄

在開發(fā)產(chǎn)品時,有哪些子系統(tǒng)或部件需要在芯片開發(fā)板適配目錄里放置適配文件呢?我們在 OpenHarmony 代碼目錄下執(zhí)行 grep ohos_board_adapter_dir -rn ./,輸出如下??梢钥闯?,當前需要適配的部件包含:Utils 子系統(tǒng)的 File 部件、multimedia 子系統(tǒng),communication 子系統(tǒng)的 wifi_aware、wifi_lite、bluetooth 等部件、iot_hardware 子系統(tǒng)、update 子系統(tǒng)的 ota_lite 部件。每個子系統(tǒng)或部件的適配目錄不能隨意命名,因為在子系統(tǒng)部件的 BUILD.gn 里寫死的。具體需要哪些目錄,可以參考下面的搜索結果。需要適配實現(xiàn)哪些文件,在分析相關的部件時提供。

./utils/native/lite/file/BUILD.gn:22:  deps = [ "$ohos_board_adapter_dir/hals/utils/file:hal_file_static" ]
./foundation/multimedia/utils/lite/BUILD.gn:42:      "$ohos_board_adapter_dir/media:hardware_media_sdk",
./foundation/multimedia/utils/lite/BUILD.gn:43:      "$ohos_board_adapter_dir/middleware:middleware_source_sdk",
./foundation/communication/wifi_aware/BUILD.gn:20:    "$ohos_board_adapter_dir/hals/communication/wifi_lite/wifiservice/source",
./foundation/communication/wifi_aware/BUILD.gn:22:  deps = [ "$ohos_board_adapter_dir/hals/communication/wifi_lite/wifiaware:hal_wifiaware" ]
./foundation/communication/bluetooth/services/bluetooth/BUILD.gn:18:    "$ohos_board_adapter_dir/hals/communication/bluetooth/services:btservice",
./base/iot_hardware/peripheral/BUILD.gn:18:    "$ohos_board_adapter_dir/hals/iot_hardware/wifiiot_lite:hal_iothardware",
./base/iot_hardware/peripheral/BUILD.gn:25:      "$ohos_board_adapter_dir/hals/iot_hardware/wifiiot_lite:hal_iothardware",
./base/update/ota_lite/frameworks/test/unittest/common/BUILD.gn:36:    deps += [ "$ohos_board_adapter_dir/hals/update:hal_update_static" ]
./base/update/ota_lite/frameworks/test/unittest/common/BUILD.gn:39:    deps += [ "$ohos_board_adapter_dir/update:hal_update" ]
./base/update/ota_lite/frameworks/source/BUILD.gn:36:    deps += [ "$ohos_board_adapter_dir/hals/update:hal_update_static" ]
./base/update/ota_lite/frameworks/source/BUILD.gn:64:    deps += [ "$ohos_board_adapter_dir/update:hal_update" ]

5、內(nèi)核配置文件夾 kernel_configs

在產(chǎn)品解決方案根目錄下的文件夾 openharmonyvendorgoodixgr5515_sk_iotlink_demokernel_configs,是內(nèi)核內(nèi)核文件夾。目前,下面主要是內(nèi)核特性裁剪配置文件 debug.config、release.config 等等。這個配置文件夾及下面的文件是如何使用的,從文件 kernelliteos_mliteos.gni 可以找到答案,代碼片段如下??梢钥闯鼍唧w使用哪個文件,是根據(jù)編譯構建類型決定的,debug、release、tee 等等。

liteos_config_file = "${ohos_build_type}.config"

liteos_config_file =
    rebase_path(liteos_config_file, "", "$product_path/kernel_configs")
print("liteos_config_file:", liteos_config_file)

6、ACE 配置文件夾 ace_lite_config

如果配置 ACE 子系統(tǒng)的 ace_engine_lite 部件,需要在產(chǎn)品解決方案目錄下創(chuàng)建目錄 ace_lite_config,存放相應的頭文件對部件進行配置定義。可以查看文件 foundationaceace_engine_liteframeworkstargetsBUILD.gn 中的代碼片段了解更多。

config("ace_lite_target_config") {
  if (enable_ohos_ace_engine_lite_product_config) {
    defines = [ "ENABLE_OHOS_ACELITE_PRODUCT_CONFIG=1" ]
  }
  include_dirs = [ "$product_path/ace_lite_config" ]
 ......
}

7、三方軟件文件夾 third_party_dir

上文已經(jīng)知道部分部件依賴三方軟件,具體是哪些部件依賴三方軟件,我們在 OpenHarmony 代碼目錄下執(zhí)行 grep ohos_third_party_dir -rn ./,輸出如下??梢钥闯觯斍靶枰m配的部件包含:communication、ota_lite 部件。

./foundation/communication/softbus_lite/discovery/BUILD.gn:32:      "$ohos_third_party_dir/lwip_sack/include",
./foundation/communication/softbus_lite/trans_service/BUILD.gn:31:      "$ohos_third_party_dir/lwip_sack/include",
./foundation/communication/softbus_lite/trans_service/BUILD.gn:32:      "$ohos_third_party_dir/mbedtls/include",
./foundation/communication/softbus_lite/authmanager/BUILD.gn:31:      "$ohos_third_party_dir/mbedtls/include",
./base/update/ota_lite/frameworks/source/BUILD.gn:31:      "$ohos_third_party_dir/mbedtls/include",
./base/update/ota_lite/frameworks/source/BUILD.gn:32:      "$ohos_third_party_dir/lwip_sack/include",
./base/update/ota_lite/frameworks/source/BUILD.gn:55:      "$ohos_third_party_dir/mbedtls/include",
./base/update/ota_lite/frameworks/source/BUILD.gn:56:      "$ohos_third_party_dir/lwip_sack/include


審核編輯 黃宇

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

    關注

    455

    文章

    50791

    瀏覽量

    423482
  • 開源
    +關注

    關注

    3

    文章

    3342

    瀏覽量

    42490
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5046

    瀏覽量

    97433
  • OpenHarmony
    +關注

    關注

    25

    文章

    3721

    瀏覽量

    16302
收藏 人收藏

    評論

    相關推薦

    OpenHarmony 移植build lite 編譯構建過程

    這些疑惑,會對 build lite 編譯構建過程有個更深入的理解。 1、產(chǎn)品解決方案代碼是如何被調(diào)用編譯的 在文件 buildliteBUILD.gn 配置文件中的構建目標 //build
    的頭像 發(fā)表于 02-19 16:19 ?953次閱讀

    從零開始移植OpenHarmony輕量系統(tǒng)

    將交叉編譯器環(huán)境變量bin目錄配置到.bashrc文件中。執(zhí)行arm-none-eabi-gcc -v,有如下打印則表示交叉編譯器配置正確。(3)編譯執(zhí)行hb set,選擇gd32f303_lianzhian然后執(zhí)行hb
    發(fā)表于 02-09 18:58

    三步就能在OpenHarmony中實現(xiàn)車牌識別

    設置實現(xiàn)下面介紹移植的大致流程,具體細節(jié)可參考小型系統(tǒng)上運行開源項目車牌識別及移植 opencv 庫。移植OpenCV下載源碼獲取源碼將 OpenCV 庫源碼放在 OpenHarmony
    發(fā)表于 06-28 10:15

    三步就能在OpenHarmony中實現(xiàn)車牌識別

    參考小型系統(tǒng)上運行開源項目車牌識別及移植 opencv 庫。移植OpenCV下載源碼獲取源碼將 OpenCV 庫源碼放在 OpenHarmony目錄下的 third_party 下
    發(fā)表于 07-06 11:20

    基于openharmony適配移植的相冊圖片選擇演示

    項目介紹 項目名稱:RxImagePicker 所屬系列:openharmony的第三方組件適配移植 功能:相冊圖片選擇 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本:sdk6,DevEco
    發(fā)表于 03-23 09:28 ?2次下載

    基于openharmony適配移植的NiceDialog組件

    項目介紹 項目名稱:NiceDialog 所屬系列:openharmony的第三方組件適配移植 功能:NiceDialog基于CommonDialog的擴展,讓dialog的使用更方便 項目移植狀態(tài)
    發(fā)表于 03-25 11:54 ?1次下載

    基于openharmony適配移植的代碼視圖教程案例

    項目介紹 項目名稱:Codeview 所屬系列:openharmony的第三方組件適配移植 功能:代碼塊高亮顯示。 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本:sdk6,DevEco
    發(fā)表于 04-07 09:02 ?4次下載

    基于openharmony適配移植的ohos原生UI框架

    項目介紹 項目名稱:XUI 所屬系列:openharmony的第三方組件適配移植 功能:一個簡潔而又優(yōu)雅的ohos原生UI框架,解放你的雙手! 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本
    發(fā)表于 04-07 09:04 ?1次下載

    基于openharmony適配移植的滾動視圖教程

    項目介紹 項目名稱:StickyScrollView 所屬系列:openharmony的第三方組件適配移植 功能:粘連頭部,懸停底部的ScrollView 項目移植狀態(tài):主功能完成 調(diào)用差異:無
    發(fā)表于 04-07 10:11 ?2次下載

    基于openharmony適配移植的搜索控件

    項目介紹 項目名稱:SimpleSearchView 所屬系列:openharmony 第三方組件適配移植 功能:一款簡單的基于鴻蒙風格的搜索控件 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本
    發(fā)表于 04-07 10:25 ?1次下載

    基于openharmony適配移植的MaterialBanner教程

    項目介紹 項目名稱:MaterialBanner 所屬系列:openharmony的第三方組件適配移植 功能:一個帶有icon,message,button的小部件 項目移植狀態(tài):主功能完成 調(diào)用
    發(fā)表于 04-08 09:54 ?1次下載

    基于openharmony適配移植的地圖視圖教程案例

    項目介紹 項目名稱:MapView 所屬系列:openharmony的第三方組件適配移植 功能:可以縮放、旋轉、標記、導航的室內(nèi)地圖 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本:sdk6
    發(fā)表于 04-11 11:00 ?3次下載

    基于openharmony適配移植的Socket通訊教程

    項目介紹 項目名稱:OkSocket 所屬系列:openharmony的第三方組件適配移植 功能:是一款基于Tcp協(xié)議的Socket通訊(長連接) 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本
    發(fā)表于 04-12 09:13 ?3次下載

    基于openHarmony適配移植的即時聊天功能實現(xiàn)

    項目介紹 項目名稱:NettyChat 所屬系列:openHarmony的第三方組件適配移植 功能:實現(xiàn)了即時聊天功能 項目移植狀態(tài):100%,移植完成即時聊天功能。 調(diào)用差異:無 開
    發(fā)表于 04-12 09:29 ?5次下載

    基于openharmony適配移植的okble組件

    項目介紹 項目名稱:okble 所屬系列:openharmony的第三方組件適配移植 功能:簡單易用的BLE library 項目移植狀態(tài):主功能完成 調(diào)用差異:無 開發(fā)版本:sdk6,DevEco
    發(fā)表于 04-13 09:39 ?2次下載
    主站蜘蛛池模板: 蜜臀AV浪潮99国产麻豆| 日本久久免费大片| 人人做人人干| 亚洲国产精品无码2019| 777EY_卡通动漫_1页| 国产99久久九九免费精品无码| 精品国产乱码久久久久久免费 | 国产色婷婷亚洲99精品| 伦理片在线线手机版韩国免费6 | 乡村教师电影完整版在线观看| 国产成人精品男人的天堂网站| 久久99热只有频精品| 欧美兽交YOYO| 亚洲乱亚洲乱妇13p| sao虎影院桃红视频在线观看| 国语自产精品一区在线视频观看| 欧美精品成人a多人在线观看| 亚洲蜜桃AV永久无码精品放毛片| 拔萝卜电视剧高清免费| 久久国产精品二区99| 无码AV免费精品一区二区三区| 91成品视频| 国产亚洲视频中文字幕| 日本久久久久亚洲中字幕| 中文文字幕文字幕亚洲色| 国产女人与黑人在线播放| 欧美精品专区第1页| 伊人影院中文字幕| 国产人妻777人伦精品HD| 人人干人人爽| 18禁裸乳无遮挡免费网站| videosgrati欧美另类| 精品无码国产自产在线观看| 少妇高潮A视频| bt成人种子| 麻生希第一部快播| 亚洲中文在线精品国产| 国产精品视频免费视频| 色多多污污在线播放免费| 99热这里只有精品视频2| 久久4k岛国高清一区二区|