HarmonyOS鸿蒙Next中ohpm是否支持依赖传递

HarmonyOS鸿蒙Next中ohpm是否支持依赖传递 SDK 有如下依赖关系 A -> B -> C
A 能否在不声明 C 依赖 C 的情况下直接引用 C 中方法

4 回复

可以。

比如在a.ets文件中需要:

import router from '[@ohos](/user/ohos).router';

然后在@ohos.router.d.ts文件中需要:

import { AsyncCallback } from './[@ohos](/user/ohos).base';

完全可以直接在a.ets中:

import { AsyncCallback } from '[@ohos](/user/ohos).base';

在此过程中,只需要保证索引无误即可。

此外,如果是自定义路径,可以在该module的oh-package.json5文件中配置依赖,即"dependencies"字段,提高路径复用性。

建议使用oh-package.json5文件配置引用,声明dependencies,不建议规避其使用。

原因:

未在项目 oh-package.json5 中声明的依赖,在项目中如果依然被直接引用,被称之为“幽灵依赖”现象。这就会导致问题:间接依赖版本的不可控性。如果代码里使用到某个版本的间接依赖,不同时间安装的依赖可能版本不一致,程序运行可能出现意想不到的错误。

举例说明:

依赖关系是project->A(1.0.0)->B(^1.0.0)->C (latest),在dependencies只声明了A,但是工程中import了B和C。而B和C的版本是不可控的,如果C的开发者发布了一个2.0.0的版本,下次安装依赖时,可能会安装C @2.0.0的版本。然后就有可能出现一些玄学问题,例如:在代码没有任何改动的情况下,程序运行却出现报错,不同时间不同PC上构建的应用运行表现不一致等。

所以ohpm为了解决幽灵依赖的问题,设计了一个特殊的存储结构,从技术上进行限制、不允许引用间接依赖,从而避免出现幽灵依赖问题。在上面例子中表现就是:代码里只能引用A,引用B或C就会编译报错,提醒用户修改依赖配置。

更多关于HarmonyOS鸿蒙Next中ohpm是否支持依赖传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  • HAR和HSP均不支持循环依赖,也不支持依赖传递。参考链接

在HarmonyOS鸿蒙Next中,ohpm(OpenHarmony Package Manager)支持依赖传递。ohpm是用于管理OpenHarmony项目依赖的工具,类似于其他包管理器的功能。当一个包依赖于其他包时,ohpm会自动解析并下载这些依赖包,确保项目的依赖关系得到满足。ohpm的依赖传递机制允许开发者直接声明顶层依赖,而无需手动管理所有嵌套依赖。

在HarmonyOS Next中,ohpm(OpenHarmony Package Manager)支持依赖传递。当你在oh-package.json5文件中声明依赖时,ohpm会自动解析并安装这些依赖及其传递依赖,确保所有必要的包都能被正确引入项目。这种机制简化了依赖管理,提高了开发效率。

回到顶部