HarmonyOS har 模块不能读取 rawfile 下的资源

有三个模块分别是 har_lib, hsp_lib, entry;

每个模块下都有 rawfile, 其中:

har_lib: rawfile/har/xxx.json

hsp_lib: rawfile/hsp/xxx.json

entry: rawfile/entry/xxx.json

模块代码:

  1. har_lib 模块:
import { Context } from '@kit.AbilityKit'

export const har_lib = (context: Context): void => {
  const resourceManager = context.resourceManager
  const list = resourceManager.getRawFileListSync('')
  console.warn('har_lib list: ', JSON.stringify(list))
}
  1. hsp_lib 模块:
export * from 'har_lib'
  1. entry 模块:
import {har_lib} from 'har_lib' 或者 import {har_lib} from 'hsp_lib'
har_lib(this.context)

场景1: 如果entry 仅仅引入 har_lib, 且执行 har_lib();

输出:har_lib list: ["entry","har"]

场景2:如果 entry 仅仅引入 hsp_lib, hsp_lib 引入 har_lib, 在 entry 中执行 har_lib();

输出: har_lib list: ["entry"]

目前项目是按照场景2构建的,导致在 har_lib 中不能读取 rawfile。请问有什么好的解决方案。

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

出现该问题原因是由于entry是直接访问不到hsp中har的资源的,需要createModuleContext才行

请参考如下实现方案:

先创建hsp的上下文,再用getRawFileContent获取内容:

getContext().createModuleContext(‘library’).resourceManager.getRawFileContent((‘bundle.harmony.js’));

获取hsp的上下文,请尝试这个:

Context.createModuleContext,

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-context-stage-V5#获取本应用中其他module的context

moduleName获取请参考:

1、获取har所在hsp或者hap模块的模块名:解决方案:让hap或者hsp自己传参给har。

2、 若在entry引入har,无需moduleName,直接getContext().resourceManager,

若在hsp引入,需模块名 需getContext().createModuleContext(moduleName).resourceManager

注意:createModuleContext仅支持获取本应用中其他Module的Context和应用内HSP的Context,不支持获取其他应用的Context。

分享
微博
QQ
微信
回复
3天前
相关问题
HAR能读到另一个HARrawfile文件吗
1835浏览 • 1回复 待解决
hsp模块rawfile文件读取问题
319浏览 • 1回复 待解决
无法读取到hsp模块rawfile文件
1991浏览 • 1回复 待解决
appscope里定义资源Har不能引用
238浏览 • 1回复 待解决
HarmonyOS 读取本地RawFile文件失败
39浏览 • 1回复 待解决
Preview是否支持读取rawfile文件
2488浏览 • 1回复 待解决
pthread创建线程中如何读取rawfile
1992浏览 • 1回复 待解决
HarmonyOS fs模块读取文件问题
572浏览 • 1回复 待解决
HSP中rawfile视频不能播放
361浏览 • 1回复 待解决
HarmonyOS apng库如何加载rawfile资源
69浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人