在HarmonyOS har 中 resourceManager 无法获取 string id ?

在依赖已经打包好的 har 包时,出现 Resource id invalid 9001001 的错误。在 har 中通过 resourceManager.getStringSync($r(‘app.string.test_text’)) 方法获取 string.json 中的字符串,源码依赖该 har 时没有问题。打包成 har 放到远程仓库依赖时,一旦进入 har 中的组件,会出现 Resource id invalid 9001001 的报错 crash。查看 oh_modules 中关于该 har 的源码时,发现所有的 id 都变成了 -1,请教需要怎么解决该问题。原代码:

 updateInfoByRes(strResId: number): string {      
    return getContext().resourceManager.getStringSync(strResId);    
} 

har 中编译后的代码:

this.updateInfo({ "id": -1, "type": 10003, params: ["app.string.test_text"], "bundleName": "", "moduleName": "" }.id); 

该方法在 aboutToAppear() 中调用。

阅读 588
1 个回答

getcontext默认是entry的context,如果是entry直接依赖har,应该能找到资源,但是如果是hsp依赖har,得指定context模块,不然默认去entry上找,是找不到的。请在getContext后面添加createModuleContext指定模块。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题