文档管理中心

如何解决HAR包资源被覆盖问题

问题现象

了解到HAR中的资源优先级最低,如何规避HAR包资源被覆盖问题?

背景知识

在编译构建HAP时,DevEco Studio会从HAP模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,DevEco Studio会按照以下优先级进行覆盖(优先级由高到低)

  • AppScope(仅Stage模型支持)。
  • HAP包自身模块。
  • 依赖的HAR模块,如果依赖的多个HAR之间有资源冲突,会按照工程oh-package.json5中dependencies下的依赖顺序进行覆盖,依赖顺序在前的优先级较高。例如下方示例中dayjs和lottie中包含同名文件时,会优先使用dayjs中的资源。
// oh-package.json5
{
  "dependencies": {
    "dayjs": "^1.10.4",
    "lottie": "^2.0.0"
  }
}

解决方案

  • 在HAR包中为所有资源(如图片、字符串、颜色等)添加唯一前缀(如模块名缩写),之后就可以指定引用HAR包中的资源。
  • 为不同HAR模块创建专属的资源子目录,将HAR包中的资源按功能或模块分类存放。
  • 使用别名引用资源,避免硬编码资源ID。
搜索
请输入您想要搜索的关键词