HarmonyOS 鸿蒙Next 同名组件,运行时如何调用
HarmonyOS 鸿蒙Next 同名组件,运行时如何调用
工程中如果依赖了一个 a(类型:har) 组件,a 组件依赖了 hrouter(har),版本为 0.0.9,我的工程根目录同时依赖了 hrouter ,版本为 0.1.3,0.9.0和0.1.3 中有一个方法传递参数发生变化,这时候工程运行,我编写了 0.1.3版本穿参数方法,但实际的逻辑是按照 0.0.9 版本执行的。
同名组件的不同版本依赖,会发生逻辑异常,这种怎么解决呢
devDependencie字段只是开发态依赖, 里面的资源不会打到依赖它的包中,包的依赖不会进行传递,相关的资源也不会进行收集。
dependencies字段中的依赖,才会进行打包进入demo的entry、library中。
因为以上2点,导致libraryUI 中的资源"app.media.scan_selected2"在配置devDependencie时,因编译器找不到资源而报错,但是不影响开发。
针对问题建议:
1. 在libraryUI没有发布har包前,通过devDependencies依赖开发。
2. 如果想打包调试,则使用dependencies定义。
3. 通过dependencies定义后,依赖冲突可以使用overrides字段控制版本,可参考以下文档:
[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpmrc-V5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpmrc-V5)
更多关于HarmonyOS 鸿蒙Next 同名组件,运行时如何调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,当遇到同名组件的运行时调用问题,主要依赖于组件的注册、查找和激活机制。鸿蒙系统采用了一套基于Ability(能力)的组件化架构,每个组件(包括Page、Service、DataAbility等)都需要在manifest文件中进行声明。
对于同名组件的调用,系统会根据包名、组件名以及可能的参数(如Intent中的action、category、data等)来匹配并激活相应的组件。在运行时,如果应用程序需要调用一个同名组件,通常会通过Intent来指定目标组件的详细信息,并调用系统的API(如startAbility)来启动该组件。
如果两个应用包含了同名的组件,系统会基于Intent中的额外信息和应用的权限来决定启动哪一个组件。这通常涉及到Intent的过滤匹配,以及组件的导出属性(exported)等设置。
在鸿蒙开发中,处理同名组件调用时,需要确保Intent的构造足够精确,以避免歧义。同时,开发者也需要注意组件的声明和配置,确保它们符合系统的安全策略和运行要求。
如果问题依旧没法解决请联系官网客服,官网地址是: