HarmonyOS 鸿蒙Next Har包引用问题
HarmonyOS 鸿蒙Next Har包引用问题
我这边工程里有entry、A、B、C 四个模块,A、B、C是Har类型的module,A、B 模块去依赖C。
1. 第一种方式将C模块编译出Har文件,A和B分别本地依赖这个Har文件, 然后打包出A和B的Har文件,并在entry中去依赖,打包出最终的hap。
2. 第二种是将C模块生成的Har上传到公司私服,然后A和B模块分别通过远程依赖的方式去依赖C,然后打包出A和B的Har文件,并在entry中去依赖,打包出最终的hap。
C模块har包的大小是20M。
这两种方式打包出的hap包的文件大小一样大,为什么? 我理解第一种方式 C模块的Har应该存在两份,打包出来的hap包不应该比第二种方式要大吗
1. 第一种方式将C模块编译出Har文件,A和B分别本地依赖这个Har文件, 然后打包出A和B的Har文件,并在entry中去依赖,打包出最终的hap。
2. 第二种是将C模块生成的Har上传到公司私服,然后A和B模块分别通过远程依赖的方式去依赖C,然后打包出A和B的Har文件,并在entry中去依赖,打包出最终的hap。
C模块har包的大小是20M。
这两种方式打包出的hap包的文件大小一样大,为什么? 我理解第一种方式 C模块的Har应该存在两份,打包出来的hap包不应该比第二种方式要大吗
2 回复
打包hap时,应该会遇到 ohpm 包管理 版本冲突,ohpm会自动解决版本冲突问题,
将 A.har、B.har中的 C.har 识别为同一个包(包名是相同的)的不同版本,将最新的版本打进hap中,
另外如果 手动修改了 C模块的包名,A、B使用不同的har包,其中的同名资源文件在打包进hap时也只会保留一份
关于 版本冲突问题,可以参考以下文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpmrc-V5#section368717475562
针对HarmonyOS鸿蒙Next Har包引用问题,以下是一些可能的解决方案:
-
本地Har包引用错误:
- 确保Har包已正确放置在工程根目录下的指定文件夹中。
- 在build.gradle文件中,修改Har包的依赖方式,将原有的fileTree依赖方式调整为明确的implementation依赖,并指定Har包的名称和扩展名。
-
引入第三方Har包导致编译报错:
- 确保引入的Har包与当前鸿蒙系统的版本兼容。
- 检查项目的build.gradle或相关配置文件,尝试将useNormalizedOHMUrl设置为true,或查阅官方文档了解该设置的具体含义和影响。
- 如果问题依旧,可能需要更新鸿蒙系统的SDK或工具链,或寻找其他可替代的Har包。
-
Har包互相引用问题:
- 尝试使用动态import和runtimeOnly解决重复代码和依赖问题,但需注意可能出现的引用找不到的问题。
- 另一种方法是,在引用Har包的模块中,直接引用被引用Har包的模块,而不是将Har包直接放入引用模块中。然后在最终项目中,使用overrides重新指定Har包的路径。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。