前言

OpenHarmony系统开发时,编译系统是很常见的操作,但大多是全量编译,全量编译需要拉取全量代码,光是代码就占用磁盘100G以上,拉取代码和编译代码均需要很长的时间。虽然可以通过./build.sh --product-name xxx --build-target xxx命令单独编译某个部件、文件、或者镜像,但是拉取全量代码是必须操作,编译时间也很长,这会浪费不少资源和时间影响大家开发效率。

这里绍一种单独编译部件的方法,单独编译部件不需要拉取全量代码,只需要拉取build仓和编译的目标仓,而且单仓编译时间也会大大减少,下面我们以bundlemanager_bundle_framework为例 进行说明。

环境搭建

1、准备开发环境

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-prepare.md

2、安装库和工具集

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md

如果已经全量编译成功过,可以跳过上面的操作。

拉取代码

1、初始化 repo 环境

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify

2.拉取 build 仓和独立编译部件 bundlemanager_bundle_framework 对应的仓代码,参数为代码仓的名称

repo sync -c build bundlemanager_bundle_framework

3、安装hb编译工具(需要先把build仓拉下来)

在源码根目录运行

python3 -m pip install --user build/hb

设置环境变量。

vim ~/.bashrc

export PATH=~/.local/bin:$PATH

source ~/.bashrc

在源码目录执行hb help验证是否安装成功

单仓编译

1、安装预编译工具

执行预编译脚本。如果业务代码在编译过程中需要依赖sdk里面的内容,就在脚本后面添加--download-sdk下载即可,如果不需要就不用添加,是一个可选项。

bash build/prebuilts_config.sh --download-sdk

2、单仓编译

部件独立编译源码,这里部件的名字是部件bundle.json文件中@ohos/后的名称,参数-i -t只能放在部件名的后面,且必须有一个。-i 为编译源码,-t为编译测试用例,注意,如果是编译测试用例,大概率会用到sdk的内容,因此在编译测试用例时,建议上一步中带上--download-sdk参数。

hb build bundle_framework -i -t

3、译结果

部件单独编译结果产物(so文件)位置:

out/default/src/bundlemanager/bundle_framework/

带符号表产物编译产物(带符号表的so文件,辅助反编译定位问题)位置:

out/default/src/lib.unstripped/bundlemanager/bundle_framework/

测试用例编译结果位置:

/out/default/test/bundlemanager/bundle_framework/

注意事项

  • 当前官方社区master分支代码在上库时会进行门禁测试,这里面就有部件单独编译测试,如果测试不通过,需要联系官方来解决,目前并不是所有的部件仓都支持部件单独编译。
  • 部件单独编译并不能编译出镜像,只能编译出so文件,验证功能需要手动替换so文件。
  • 目前部件独立编译仅支持开源社区master分支的standard形态,其他形态暂不支持。
  • 独立编译也可以在全量源码下使用,执行安装hb编译工具和之后的操作即可。
  • 目前默认编译结果为64位结果,暂不支持32位编译

以上内容参考官方文档:
部件独立编译使用指南

准备开发环境

安装库和工具集

安装hb编译工具

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐