OpenHarmony模块化编译

张开发
2026/5/13 13:38:58 15 分钟阅读

分享文章

OpenHarmony模块化编译
文章目录一、环境配置二、配置hb2.1、安装hb2.2、配置环境变量三、了解模块编译四、常用模块编译4.1 编译Full SDK4.2 编译kernel4.3 编译常见原生应用4.3.1 编译系统资源应用SystemResources.hap4.3.2 编译性能测试应用SmartPerf.hap4.3.3 编译输入法选择框应用input_method_choose_dialog.hap4.3.4 编译授权管理应用permission_manager.hap4.3.5 编译关机弹框应用power_dialog.hap4.4 编译foundation常用库4.4.1 AMS libabilityms.z.so4.4.2 多模输入libmmi-server.z.so4.4.3 文件系统 libfileuri_native.z.so4.4.4 窗口管理 libwm.z.so4.4.5 窗口管理服务 libwms.z.so4.4.6 蓝牙libsocket.z.so4.5其他4.5.1 升级服务 libupdateservice.z.so五、总结一、环境配置OpenHarmony版本OpenHarmony 4.0 Release编译环境WSL2 Ubuntu 18.04平台设备RK3568二、配置hbOpenHarmony 代码构建有build.sh和hb两种方式:#方式一、build.sh ./build.sh --product-name rk3568 --ccache #方式二、hb hb set -p rk3568 hb build下拉的4.0代码无法直接使用hb命令OpenHarmony_4.0_release$ hb --help hb_error: Please call hb utilities inside source root directory可参考搭建开发环境-安装编译工具 进行hb安装和环境配置。2.1、安装hbpython3 -m pip install --user build/hb2.2、配置环境变量vim ~/.bashrc #将以下命令拷贝到.bashrc文件的最后一行保存并退出。 export PATH~/.local/bin:$PATH #更新环境变量 source ~/.bashrc在源码目录执行hb help界面打印以下信息即表示安装成功。OpenHarmony_4.0_release$ hb help [OHOS INFO] ---------------------------------------------------------------------------------------------------- [OHOS INFO] usage: hb build [option] [OHOS INFO] [OHOS INFO] optional arguments: [OHOS INFO] -h, --help show this help message and exit [OHOS INFO] --target-cpu {arm,arm64,x86_64,x64} [OHOS INFO] Default:. Help:Specifies the desired cpu architecture for the build, each may support [OHOS INFO] different cpu architectures, run hb set --all to list product all supported cpu [OHOS INFO] architectures [OHOS INFO] --target-os {android,ios} [OHOS INFO] Default:. Help:Specifies the desired os type for the build, each may support different os [OHOS INFO] type, run hb set --all to list product all supported os type [OHOS INFO] -p PRODUCT_NAME, --product-name PRODUCT_NAME [OHOS INFO] Default:. Help:Build a specified product. You could use this option like this: 1.hb build [OHOS INFO] --product-name rk3568hihope 2.hb build --product-name rk3568 ...注可使用以下命令卸载hb$ python3 -m pip uninstall ohos-build三、了解模块编译为了编译调试和开发验证往往使用模块化编译替换全量编译节约编译时间提高开发效率OpenHarmony build.sh 和hb都支持模块化编译。这里以关机弹框应用为例。1、通过hdc 查看system/app应用包名或者IDE查看调出关机框log可知关机弹框所在应用包名为com.ohos.powerdialog# ls -al /system/app com.ohos.powerdialog2、在源码中搜索com.ohos.powerdialog包名定义出处确定模块对应的源码路径。可知系统关机弹框源码位于base/powermgr/power_manager/power_dialog3、确定build-target,查看base/powermgr/power_manager/power_dialog/BUILD.gn可知系统关机框模块名power_dialog_hapimport(//build/ohos.gni) group(dialog_hap) { deps [ :power_dialog_hap ] } ohos_hap(power_dialog_hap) { hap_profile entry/src/main/module.json deps [ :power_dialog_js_assets, :power_dialog_resources, ] certificate_profile signature/openharmony_sx.p7b hap_name power_dialog subsystem_name applications part_name prebuilt_hap module_install_dir app/com.ohos.powerdialog } ...4、模块编译power_dialog_hap#使用build.sh模块编译power_dialog_hap ./build.sh --product-name rk3568 --build-target power_dialog_hap #使用hb编译power_dialog_hap hb build -p rk3568 -T power_dialog_hap得到hap位于out/rk3568/obj/base/powermgr/power_manager/power_dialog/power_dialog.hap可发现out/rk3568/obj/后路径与模块源码路径对应。注意模块编译需模块目录存在BUILD.gn。四、常用模块编译4.1 编译Full SDKrm -rf out ./build.sh --product-name ohos-sdkFull SDK生成目录out/sdk/packages/ohos-sdk/4.2 编译kernel#使用build.sh编译指定产品kernel ./build.sh --product-name rk3568 --build-target kernel --gn-args linux_kernel_versionlinux-5.104.3 编译常见原生应用4.3.1 编译系统资源应用SystemResources.hap#使用build.sh编译systemres_hap ./build.sh --product-name rk3568 --build-target systemres_hap #使用hb编译systemres_hap hb build -p rk3568 -T systemres_hap得到hap位于out/rk3568/obj/base/global/system_resources/systemres/SystemResources.hap4.3.2 编译性能测试应用SmartPerf.hap#使用build.sh编译SmartPerf ./build.sh --product-name rk3568 --build-target SmartPerf #使用hb编译SmartPerf hb build -p rk3568 -T SmartPerf得到hap位于out/rk3568/obj/developtools/profiler/host/smartperf/client/client_ui/SmartPerf.hap4.3.3 编译输入法选择框应用input_method_choose_dialog.hap#使用build.sh编译input_method_choose_hap ./build.sh --product-name rk3568 --build-target input_method_choose_hap #使用hb编译input_method_choose_hap hb build -p rk3568 -T input_method_choose_hap得到hap位于out/rk3568/obj/base/inputmethod/imf/services/dialog/input_method_choose_dialog.hap4.3.4 编译授权管理应用permission_manager.hap#使用build.sh编译permission_manager ./build.sh --product-name rk3568 --build-target permission_manager #使用hb编译permission_manager hb build -p rk3568 -T permission_manager得到hap位于out/rk3568/obj/applications/standard/permission_manager/permissionmanager/permission_manager.hap4.3.5 编译关机弹框应用power_dialog.hap#使用build.sh模块编译power_dialog_hap ./build.sh --product-name rk3568 --build-target power_dialog_hap #使用hb编译power_dialog_hap hb build -p rk3568 -T power_dialog_hap得到hap位于out/rk3568/obj/base/powermgr/power_manager/power_dialog/power_dialog.hap4.4 编译foundation常用库4.4.1 AMS libabilityms.z.so./build.sh -p dayu210 --build-target abilityms得到.so位于out\rk3588\ability\ability_runtime\libabilityms.z.so4.4.2 多模输入libmmi-server.z.so./build.sh -p dayu210 --build-target libmmi-server得到.so位于out\rk3588\multimodalinput\input\libmmi-server.z.so4.4.3 文件系统 libfileuri_native.z.so./build.sh -p dayu210 --build-target foundation/filemanagement/app_file_service/interfaces/innerkits/native:fileuri_native得到.so位于out\rk3588\filemanagement\app_file_service\libfileuri_native.z.so4.4.4 窗口管理 libwm.z.so./build.sh -p dayu210 --build-target libwm得到.so位于out\rk3588\window\window_manager\libwm.z.so4.4.5 窗口管理服务 libwms.z.so./build.sh -p dayu210 --build-target libwms得到.so位于out\rk3588\window\window_manager\libwms.z.so4.4.6 蓝牙libsocket.z.so./build.sh -p rk3568 --build-target foundation/communication/bluetooth/frameworks/js/napi/src/socket:socket得到.so位于out\rk3568\communication\bluetooth\libsocket.z.so4.5其他4.5.1 升级服务 libupdateservice.z.so./build.sh -p dayu210 --build-target base/update/updateservice:update_service得到.so位于out\rk3588\updater\update_service\libupdateservice.z.so五、总结Congratulations~✌ 通过本文你已基本掌握OpenHarmony源码模块编译的原理OpenHarmony源码常用模块、应用和库等编译、替换方法接下来就可以更高效地进行OpenHarmony源码开发创作了~了解更多关于OpenHarmony文章↩

更多文章