OpenHarmony: 跨模块访问 HSP/HAR 包资源
一、引言
在OpenHarmony应用开发过程中,常常涉及到多个模块协同工作,尤其是当使用 HSP和 HAR包时,n那么如何跨模块访问其 resources
目录下的各种资源文件,如 element
目录、media
目录以及 rawfile
目录中的资源呢。
二、通过 createModuleContext 接口访问资源
在OpenHarmony开发框架中,可以借助 createModuleContext(moduleName)
接口来创建同应用中不同模块的上下文,进而获取 resourceManager
对象。通过这个对象,我们便能调用不同的接口去访问各类资源。例如,若想获取字符串资源,就可以使用 getResourceManager.getStringByNameSync('app.string.xxx')
这样的方式(其中 'app.string.xxx'
为具体的字符串资源标识符)。这一接口为我们提供了一种较为灵活且通用的资源访问途径,能够精准地定位并获取到所需资源,适用于多种类型资源在不同模块间的访问操作。
三、利用“$r”或“$rawfile”引用资源
在 OpenHarmony中,支持直接通过“r”或“rawfile”来引用 HSP 或者 HAR 包的资源。这种引用方式简洁明了,例如在构建文本组件时,可以这样写:Text($r('[hsp].string.test_string'))
,这里的“hsp”指代的是 HSP 包模块/HAR 包模块的名称,通过这种格式就能轻松获取到对应模块下指定的字符串资源。对于 rawfile
目录中的资源,同样可以利用类似的方式进行引用,使得资源的调用更加直观,代码编写也更为便捷。
四、在 HSP 包下实现资源管理类来封装资源
(一)封装思路与实现步骤
通过在 HSP 包下实现一个专门的资源管理类,将对外导出的资源进行合理封装,能够更好地组织和管理资源,方便其他模块进行访问。例如,对于 rawfile
目录中的资源,我们可以在 HAR 包(假设名称为 library
)中进行具体的封装操作。首先,在 \library\src\main\resources\rawfile
目录下有某个文件,如 iconHar.png
文件,我们可以在 \library\src\main\ets\components\mainpage\MainPage.ets
文件中封装一个方法来返回该资源的引用,像这样:
export function rawFileIconHarPng() {
return $rawfile('iconHar.png');
}
然后在 \library\Index.ets
文件中导出这个方法:
export { rawFileIconHarPng } from './src/main/ets/components/mainpage/MainPage';
这样,其他模块(如 HAP 中的模块)就能通过导入这个方法后直接使用了。
- 1回答
- 0粉丝
- 0关注
- OpenHarmony: HAP/HAR/HSP的区别
- OpenHarmony 中的HAP、HAR、HSP区别
- OpenHarmony: 如何实现跨模块的页面跳转功能
- OpenHarmony:包体积优化
- 选择OpenHarmony学习资源的考量因素
- OpenHarmony跨平台框架开发指南
- OpenHarmony: 如何查询应用包的信息
- OpenHarmony:Har工程依赖库接口二次导出
- 【HarmonyOS NEXT】 离线加载web资源,并实现web资源更新
- 应用文件访问
- OpenHarmony-测试同学安装测试包之全新姿势
- 【HarmonyOS Next开发】用户文件访问
- 【HarmonyOS学习】应用文件访问
- 跨平台开发鸿蒙原生应用
- 如何实现跨文件组件复用