鸿蒙 依赖管理:添加依赖项
·
一、配置方式
依赖项可在工程级或模块级的oh-package.json5文件中配置,支持以下三种方式:
| 方式 | 说明 |
|---|---|
| 远程三方包 | 通过ohpm安装的远程依赖 |
| 本地模块 | 通过文件夹路径或模块名引用本地模块 |
| 本地HAR/HSP包 | 通过文件路径引用本地HAR或HSP包 |
依赖字段
| 字段 | 说明 |
|---|---|
| dependencies | 生产依赖,编译和运行时都需要 |
| devDependencies | 开发依赖,仅开发时需要 |
| dynamicDependencies | 动态依赖,仅限于动态依赖HSP的使用场景 |
示例
远程三方包:
{
"dependencies": {
"@ohos/lottie": "^2.0.0"
}
}
本地模块(两种方式):
{
"dependencies": {
// 方式一:配置本地文件夹路径
"folder": "file:../folder",
// 方式二:配置本地模块名(6.0.0 Beta1+)
"moduleA": "@module:moduleA"
}
}
本地HAR/HSP包:
{
"dependencies": {
// HAR包
"package": "file:../package.har",
// HSP包(release模式生成tgz包)
"package": "file:../package.tgz"
}
}
注意:依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在对应模块的oh_modules目录下。
二、编译行为差异
| 名词 | 说明 |
|---|---|
| 三方包依赖 | 通过远程三方包和本地HAR/HSP包的方式指定依赖项 |
| 本地依赖 | 通过本地模块的方式指定依赖项 |
| 开启bundledDependencies的字节码HAR | 字节码HAR的build-profile.json5中buildOption/arkOptions下的bundledDependencies字段配置为true |
行为差异表
下表说明不同依赖配置方式在不同编译场景下的行为:
| 依赖项 | 配置位置 | 编译HAP | 编译HSP | 编译未开启bundledDependencies的字节码HAR | 编译开启bundledDependencies的字节码HAR |
|---|---|---|---|---|---|
| 源码HAR-三方包依赖 | devDependencies | 1 | 1 | 2 | 1 |
| 工程级dependencies | / | / | 3 | 3 | |
| 源码HAR-本地依赖 | devDependencies | 1 | 1 | 2 | 1 |
| 工程级dependencies | / | 1 | 2 | 1 | |
| 字节码HAR-三方包依赖 | devDependencies | 2 | 2 | 2 | 2 |
| 工程级dependencies | / | / | 3 | 3 | |
| HSP-三方包依赖 | devDependencies | 1 | 1 | 2 | 1 |
|
工程级dependencies /dynamicDependencies |
/ | / | / | / | |
| HSP-本地依赖 | devDependencies | 1 | 1 | 2 | 1 |
|
工程级dependencies /dynamicDependencies |
/ | 1 | 2 | 1 |
符号含义
| 符号 | 含义 |
|---|---|
| 1 | 依赖项仅代码文件参与编译,依赖项的自身配置不会参与收集,可能造成编译/运行时异常 |
| 2 | 依赖项没有被收集,会导致编译异常 |
| 3 | 编译正常,后续集成时可能会造成运行时异常 |
| / | 编译和运行都正常 |
优化开关
从DevEco Studio 5.1.1 Beta1版本开始,hvigor-config.json5文件提供ohos.byteCodeHar.integratedOptimization字段:
{
"properties": {
"ohos.byteCodeHar.integratedOptimization": true
}
}
说明:
-
该开关只是优化了依赖收集的逻辑,并没有优化依赖项的自身配置收集的逻辑
-
编译字节码HAR,且依赖配置在工程级dependencies/dynamicDependencies对应的场景才能完全优化
-
依赖包提供方和集成方都需要配置该字段
更多推荐


所有评论(0)