一、配置方式

依赖项可在工程级或模块级的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对应的场景才能完全优化

  • 依赖包提供方和集成方都需要配置该字段

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐