HarmonyOS 鸿蒙Next har包集成到工程项目后,har内部通过resourceManager获取string资源报错crash

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next har包集成到工程项目后,har内部通过resourceManager获取string资源报错crash

目前就har内部在组件页面中,因为需要国际化展示,通过getContext(this).resourceManager.getStringByNameSync('app.string.nm_forward_title')获取本har内部的资源报错:

333333.png

har包中string资源是存在的,集成后资源也看到拷贝过去了的,har混淆开或关均会报错,但在har所在的自身工程项目中运行则不会出现这个错误。

我尝试过使用getStringXxxx的其他方法也是一样的,请问这个是咋回事呢?整了挺久还是没解决,有点懵了。到底是context的问题还是resourceManager的问题?


更多关于HarmonyOS 鸿蒙Next har包集成到工程项目后,har内部通过resourceManager获取string资源报错crash的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

遇到同样的问题,楼主有新的答案没

更多关于HarmonyOS 鸿蒙Next har包集成到工程项目后,har内部通过resourceManager获取string资源报错crash的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主试试看在har中这样调用字符资源呢:getContext().resourceManager.getStringValue($r('app.string.xxx').id)

你好,用这个方法的确是能取到。这其中是有什么讲究吗?而且这个在混淆后应该就也取不到了吧,

我也是尝试出来的,您试过代码混淆后,可以取到吗?

当har包被entry引用后,


```kotlin
getContext(this)拿到的上下文是entry的,文件会从entry种读取,但是你在编写har包的时候,resourceManager是校验你当前har包的source文件的

那请问这种情况改怎么解决呢?如果是这样的话,岂不是每一个har包都会遇到这样的问题,

还是说需要另外弄个专门的hsp资源模块从中去取吗?

针对HarmonyOS鸿蒙Next har包集成到工程项目后,har内部通过resourceManager获取string资源报错crash的问题,可能的原因及解决方法如下:

  1. 资源文件路径或命名错误:检查har包中的资源文件是否正确放置在指定的资源目录下,且文件名及后缀是否与代码中引用的完全一致。

  2. 资源引用方式错误:确保在代码中通过resourceManager获取资源时,使用的资源ID或路径与资源文件中定义的相匹配。

  3. 资源文件损坏:验证har包中的资源文件是否完整未损坏,可以尝试重新导出har包并集成到项目中。

  4. 版本兼容性问题:检查当前使用的HarmonyOS SDK版本是否与har包兼容,必要时升级或降级SDK版本。

  5. 构建配置问题:检查项目的构建配置,确保har包被正确集成到构建路径中,且相关依赖库已正确配置。

  6. 权限问题:确认应用是否具有访问资源的必要权限,特别是当资源位于受保护路径时。

如果上述方法均未能解决问题,可能是由于更深层次的系统或框架bug导致。此时,建议直接联系官网客服以获取更专业的技术支持。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部