HarmonyOS 鸿蒙Next资源文件导出
HarmonyOS 鸿蒙Next资源文件导出 鸿蒙三层架构下Har中的资源文件怎么导出,HAP包能使用?
【解决方案】
直接导出资源路径:通过r或r或rawfile语法封装资源路径并导出:
- 定义资源访问方法:在HAR模块中封装资源路径,例如:
// HAR模块/src/main/ets/utils/ResManager.ets
export class ResManager {
// 导出图片资源
static getImage(): Resource {
return $r('app.media.iconHar');
}
// 导出rawfile原始文件
static rawFileExample(): string {
return $rawfile('icon.png');
}
}
- 在Index.ets中导出:
// HAR模块/Index.ets
export { ResManager } from './src/main/ets/utils/ResManager';
- HAP包调用:
import { ResManager } from 'har名称';
Image(ResManager.getImage()) // 加载HAR中的图片
【总结】
通过封装资源管理类或直接导出资源路径,结合Index.ets统一管理导出接口,可实现HAR资源的高效复用,同时规避资源冲突问题。开发时需注意HAR与HAP的构建依赖关系及资源优先级规则。
更多关于HarmonyOS 鸿蒙Next资源文件导出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
资源文件只需要包依赖过后就能使用了。
资源放置与声明
资源文件需存放在HAR模块的resources
目录下(如/src/main/resources/base/element
等),通过工具类封装资源访问
// HAR模块资源管理类
export class ResManager {
static getImage(): Resource {
return $r('app.media.icon_har'); // 访问media资源
}
static getString(): Resource {
return $r('app.string.har_desc'); // 访问字符串资源
}
}
在HAR模块的oh-package.json5
中指定入口文件:
{
"main": "Index.ets"
}
HAP引用HAR资源
在HAP模块的oh-package.json5
中添加HAR依赖:
"dependencies": {
"library": "file:../library.har"
}
执行npm install
安装依赖。
通过封装类访问资源:
import { ResManager } from 'library';
@Component
struct IndexPage {
build() {
Image(ResManager.getImage())
Text(ResManager.getString())
}
}
直接使用$r
语法(需确保HAR资源路径正确)
$r('app.media.icon_har') // HAR的media资源
$r('app.string.har_desc') // HAR的字符串资源
跨模块(HAP、HSP或HAR)访问HAR资源和访问模块自身资源一样。
在编译后,har 中的资源会合并到 hap 中。无需导出, 就可以在 hap 包中使用:
Image($r('app.media.your_har_img'))

- 注意事项:
- Har中的资源会与HAP资源合并,需避免命名冲突
- 系统会根据设备配置自动选择匹配的资源
- 资源引用在编译时会被正确解析
这种设计保持了HarmonyOS的资源隔离机制,同时实现了模块间的资源共享。