在依赖已经打包好的 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() 中调用。
getcontext默认是entry的context,如果是entry直接依赖har,应该能找到资源,但是如果是hsp依赖har,得指定context模块,不然默认去entry上找,是找不到的。请在getContext后面添加createModuleContext指定模块。