鸿蒙组件化-源码切换

157 阅读2分钟

在鸿蒙应用开发中,多工程架构(如组件化、模块化)已成为主流开发模式。通过动态切换源码,开发者可实现:

  • 独立开发/调试子模块
  • 多环境配置(开发/测试/生产)
  • 依赖库热切换
  • 跨工程代码复用

在muti-repo的case,宿主在oh-package.json5依赖1.0.0的@ohos/base。当想要本地调试base的很不方便,想要实时debug,实时在宿主中可以debug最新的代码。换成源码依赖,可以参考本文章的方案。

32553478c8245d8ce5f9d56fe21fcf87.png

原理

思考流程:

把远端@ohos/base的代码换成本地的base的代码就可以。

需要满足几个条件

  • 代码路径换成 本地的源码文件夹 == 动态增加oh-package.json5的override字段
  • 每次构建需要同时也要构建base == 动态增加build-profile的module字段(让base变成宿主的子模块触发构建)
  • 不需要修改依赖链

初步方案就是动态增加oh-package.json5的override字段,然后再增加build-profile的module字段

  1. 增加增加override,修改代码的路径.

图片.png

2.增加宿主的module,让base变成宿主的子模块触发构建

图片.png

但是还是遇见卡点,动态增加的module,并不能让base正常当成宿主的子模块,sync不会报错,但是

build后会报错Cannot import files outside of the current module using relative paths. Import statement: './ImageUtils'

无法处理相对路径





经过两周

图片.png

图片.png

图片.png

图片.png 的hvigor源码深入学习之后,hvigor研究。发现hvigor初始化阶段之后就已经确定所有的构建链(鸿蒙叫node) ,无法动态增加。

初始化的api:configEvaluated压根也不回调。

图片.png 再经过鸿蒙那边的指导之后。

手动增加hvigorConfig.ts文件,在这个文件中调用includeNode动态增加basesdk的构建node 得以成功。

图片.png

图片.png

最后已经可以正常编译

欢迎交流 wx:Lantianbaox email:358689596@qq.com