HarmonyOS 第三方插件的最佳实践引用场景咨询
如图所示为项目目录结构,product为主项目,feature中为不同业务的har,正常的公共方法都是从common中一层层往上传递。
那如果我现在需要添加一个第三方插件dayjs,在feature_account业务中需要使用,在feature_calendar中也需要使用。
方案一:这个时候,我的第三方依赖如果两个业务模块都进行安装的话,har的包大小其实是比引用一份更大(整个是对的吧??)那业务模块不断新增的话,一个插件就要多非常多的内存,感觉不大对
方案二:把dayjs的方法放进sdk中,直接在sdk装包,把所有的方法和属性都export出去,可以解决统一使用的问题。
问题1:sdk有多个插件导出,可能会出现多个插件的方法命名重复;
问题2: 将某个插件的所有方法再export出去,也比较麻烦。请问有没有什么其他方式?
HarmonyOS
赞
收藏 0
回答 2
待解决
相关问题
HarmonyOS 第三方应用自动化发布咨询
59浏览 • 1回复 待解决
引用第三方库的版本自动升级的问题
98浏览 • 1回复 待解决
引用第三方库文档pullToRefresh时图片资源引用找不到。
700浏览 • 1回复 待解决
HarmonyOS项目引用第三方npmmirror包依赖遇到下面问题
278浏览 • 1回复 待解决
ArkTS API 9 Stage 如何引用第三方字体?
3317浏览 • 1回复 待解决
HarmonyOS如何移植第三方MCU?
9081浏览 • 1回复 待解决
鸿蒙中 如何通过npm安装依赖第三方插件
11906浏览 • 1回复 待解决
HarmonyOS支持的第三方库的列表
1300浏览 • 1回复 待解决
图片剪切的第三方框架
104浏览 • 1回复 待解决
BUILD.gn引用第三方so文件报错undefined symbol
4273浏览 • 0回复 待解决
引用第三方组件不能显示网络图片什么原因?
4974浏览 • 2回复 待解决
在引用第三方组件代码时
5660浏览 • 1回复 待解决
如何引入自己的“第三方”库
449浏览 • 1回复 待解决
native交叉编译第三方库
82浏览 • 1回复 待解决
开发第三方SDK如何编译?
13428浏览 • 2回复 待解决
第三方怎么装鸿蒙系统?
2227浏览 • 1回复 待解决
HarmonyOS第三方开源FFmpeg与AVCodec kit 区别?
610浏览 • 1回复 待解决
有无类似bugly这种第三方插件可以上传报错日志?
73浏览 • 1回复 待解决
HarmonyOS第三方sdk bugly平替方案
335浏览 • 1回复 待解决
HarmonyOS 第三方应用安装和卸载广播
331浏览 • 0回复 待解决
第三方js库迁移有懂的吗?
2314浏览 • 1回复 待解决
是否支持使用第三方的webview内核
973浏览 • 1回复 待解决
通过ohpm install 第三方npm包,报错
1254浏览 • 1回复 待解决
第三方应用如何拿到蓝牙mac地址
348浏览 • 1回复 待解决
HarmonyOS AES加解密第三方开源工具类库
501浏览 • 1回复 待解决
在项目中引入第三方插件时,尤其是在多模块的架构中,确实需要考虑引入方式对包大小以及维护性的影响。你提到的两种方案各有优缺点,但都存在一些问题。我们可以结合这些问题来探索最佳实践。
### 项目目录结构示例
假设项目目录结构如下:
### 方案一:每个模块单独安装依赖
这种方法虽然直观,但会导致重复依赖的问题,增加整体包大小。这个问题在大型项目中尤为突出,可能不可取。
### 方案二:将插件集成到 SDK 中
这种方法可以解决重复依赖的问题,但如你所说,可能会导致命名冲突和管理不便的问题。
### 方案三:使用统一依赖管理和依赖注入
这是一种较为灵活和高效的方法,可以解决上述问题。
#### 1. 在主项目
build.gradle
中统一管理依赖你可以在项目的顶层
build.gradle
中统一管理第三方依赖。这确保了所有模块使用相同版本的依赖,避免了重复引用。#### 2. 使用依赖注入(DI)
通过依赖注入框架(如 Dagger 或其他轻量级 DI 框架),将第三方库的实例注入到需要的地方。这不仅能减小耦合,还能方便管理依赖。
##### 示例代码:
### 优点
### 结论
通过在主项目中统一管理依赖,并结合依赖注入或 ServiceLocator 模式,可以有效解决多模块使用第三方依赖时的包大小、维护性和命名冲突问题。这是一种推荐的最佳实践,能够保持代码整洁和项目的高可维护性。
product(hap)->feature(har)–>sdk(har), 这种情况下所有har最终都会合并到hap中的abc文件,会去重,一份代码。
简单测试方法:1 feature引用sdk, 其它feature不应用打包,再所有feature引用打包,看包大小变化。