文件openharmony\vendor\goodix\gr5515_sk_iotlink_demo\config.json配置的目录有芯片开发板适配目录vendor_adapter_dir和产品适配目录product_adapter_dir。
"third_party_dir": "",
"vendor_adapter_dir": "//device/soc/goodix/gr551x/adapter",
"product_adapter_dir": "//vendor/goodix/gr5515_sk_iotlink_demo/hals"
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
在文件openharmony\device\board\goodix\gr5515_sk\liteos_m\config.gni中,也配置了开发板适配目录board_adapter_dir。两处配置文件都进行了配置,根据上文分析build lite的代码,只在config.gni中配置一次即可。
# Board adapter dir for OHOS components.
board_adapter_dir = "//device/soc/goodix/gr551x/adapter"
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
3、product_adapter_dir产品适配目录
在开发产品时,有哪些子系统或部件需要在产品适配目录里放置适配文件呢?我们在OpenHarmony代码目录下执行 grep ohos_product_adapter_dir -rn ./
,输出如下。可以看出,当前需要适配的部件包含:security子系统的permission权限管理部件和启动子系统的syspara_lite系统参数部件。对于permission权限管理部件,需要在产品适配目录下创建security/permission_lite目录。对于syspara_lite系统参数部件,需要在产品适配目录下创建utils/sys_param,utils/token目录。这些目录不能随意命名,因为在子系统部件的BUILD.gn里写死的。需要适配实现哪些文件,在分析相关的部件时提供。
./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" ]
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
4、board_adapter_dir芯片开发板适配目录
在开发产品时,有哪些子系统或部件需要在芯片开发板适配目录里放置适配文件呢?我们在OpenHarmony代码目录下执行 grep ohos_board_adapter_dir -rn ./
,输出如下。可以看出,当前需要适配的部件包含:Utils子系统的File部件、multimedia子系统,communication子系统的wifi_aware、wifi_lite、bluetooth等部件、iot_hardware子系统、update子系统的ota_lite部件。每个子系统或部件的适配目录不能随意命名,因为在子系统部件的BUILD.gn里写死的。具体需要哪些目录,可以参考下面的搜索结果。需要适配实现哪些文件,在分析相关的部件时提供。
./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" ]
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
5、内核配置文件夹kernel_configs
在产品解决方案根目录下的文件夹openharmony\vendor\goodix\gr5515_sk_iotlink_demo\kernel_configs,是内核内核文件夹。目前,下面主要是内核特性裁剪配置文件debug.config、release.config等等。这个配置文件夹及下面的文件是如何使用的,从文件kernel \liteos_m\liteos.gni可以找到答案,代码片段如下。可以看出具体使用哪个文件,是根据编译构建类型决定的,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)
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
6、ACE配置文件夹ace_lite_config
如果配置ACE子系统的ace_engine_lite部件,需要在产品解决方案目录下创建目录ace_lite_config,存放相应的头文件对部件进行配置定义。可以查看文件foundation\ace\ace_engine_lite\frameworks\targets\BUILD.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" ]
......
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
7、三方软件文件夹third_party_dir
上文已经知道部分部件依赖三方软件,具体是哪些部件依赖三方软件,我们在OpenHarmony代码目录下执行 grep ohos_third_party_dir -rn ./
,输出如下。可以看出,当前需要适配的部件包含: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
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
8、其他
其他还有驱动配置文件夹hdf_config、烧写分区文件夹flash_partition_dir。后续再补充。
小结
本文介绍了build lite 轻量级编译构建系统涉及的配置目录的用途,分析了相关的源代码。因为时间关系,仓促写作,或能力限制,若有失误之处,请各位读者多多指正。
如果大家想更加深入的学习 OpenHarmony 开发的内容,不妨可以参考以下相关学习文档进行学习,助你快速提升自己:
搭建开发环境 Windows 开发环境的搭建 Ubuntu 开发环境搭建 Linux 与 Windows 之间的文件共享 ……
构建子系统 启动流程 子系统 分布式任务调度子系统 分布式通信子系统 驱动子系统 ……
写在最后
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙: 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:https://qr21.cn/FV7h05
data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/maniuT/article/details/139783915","extend1":"pc","ab":"new"}">>
id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type2" id="blog_extension">
class="extension_official" data-report-click="{"spm":"1001.2101.3001.6471"}" data-report-view="{"spm":"1001.2101.3001.6471"}">
class="blog_extension_card_left">
class="blog_extension_card_cont">
鸿蒙开发学习资料领取!!!
class="blog_extension_card_cont_r">
微信名片
评论记录:
回复评论: