部件独立编译
部件独立编译 前言 OpenHarmony系统开发时,编译系统是很常见的操作,但大多是全量编译,全量编译需要拉取全量代码,光是代码就占用磁盘100G以上,拉取代码和编译代码均需要很长的时间。虽然可以通过./build.sh --product-name xxx --build-target xxx命令单独编译某个部件、文件、或者
前言
OpenHarmony系统开发时,编译系统是很常见的操作,但大多是全量编译,全量编译需要拉取全量代码,光是代码就占用磁盘100G以上,拉取代码和编译代码均需要很长的时间。虽然可以通过./build.sh --product-name xxx --build-target xxx
命令单独编译某个部件、文件、或者镜像,但是拉取全量代码是必须操作,编译时间也很长,这会浪费不少资源和时间影响大家开发效率。
这里绍一种单独编译部件的方法,单独编译部件不需要拉取全量代码,只需要拉取build仓和编译的目标仓,而且单仓编译时间也会大大减少,下面我们以bundlemanager_bundle_framework
为例 进行说明。
环境搭建
1、准备开发环境
2、安装库和工具集
如果已经全量编译成功过,可以跳过上面的操作。
拉取代码
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位编译
以上内容参考官方文档:
部件独立编译使用指南
更多推荐
所有评论(0)