在鸿蒙应用开发中,多工程架构(如组件化、模块化)已成为主流开发模式。通过动态切换源码,开发者可实现:
- 独立开发/调试子模块
- 多环境配置(开发/测试/生产)
- 依赖库热切换
- 跨工程代码复用
在muti-repo的case,宿主在oh-package.json5依赖1.0.0的@ohos/base。当想要本地调试base的很不方便,想要实时debug,实时在宿主中可以debug最新的代码。换成源码依赖,可以参考本文章的方案。
原理
思考流程:
把远端@ohos/base的代码换成本地的base的代码就可以。
需要满足几个条件
- 代码路径换成 本地的源码文件夹 == 动态增加oh-package.json5的override字段
- 每次构建需要同时也要构建base == 动态增加build-profile的module字段(让base变成宿主的子模块触发构建)
- 不需要修改依赖链
初步方案就是动态增加oh-package.json5的override字段,然后再增加build-profile的module字段
- 增加增加override,修改代码的路径.
2.增加宿主的module,让base变成宿主的子模块触发构建
但是还是遇见卡点,动态增加的module,并不能让base正常当成宿主的子模块,sync不会报错,但是
build后会报错Cannot import files outside of the current module using relative paths. Import statement: './ImageUtils'
无法处理相对路径
经过两周
的hvigor源码深入学习之后,hvigor研究。发现hvigor初始化阶段之后就已经确定所有的构建链(鸿蒙叫node) ,无法动态增加。
初始化的api:configEvaluated压根也不回调。
再经过鸿蒙那边的指导之后。
手动增加hvigorConfig.ts文件,在这个文件中调用includeNode动态增加basesdk的构建node 得以成功。
最后已经可以正常编译
欢迎交流 wx:Lantianbaox email:358689596@qq.com