基于反射机制实现 JavaScript 与 HarmonyOS Next 系统原生通信

  • Creator 版本:

  • 目标平台:

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:

Creator 版本:3.8
目标平台:鸿蒙手机
问题:JS引擎的游戏调用鸿蒙代码没生效,初步判断可能是依赖包的格式有问题。但是目前没能找到解决办法。
简单地说: 基于反射机制实现 JavaScript 与 HarmonyOS Next 系统原生通信 中 HAP加载HAR模块名 的示例我参考之后,结果不生效,希望官方帮我看看,格式哪里不对了。
本地鸿蒙工程的代码格式:



JS引擎的代码格式:

可以确定JS引擎的代码不会有问题,因为这个代码是参照文档上写的:
https://docs.cocos.com/creator/3.8/manual/zh/advanced-topics/arkts-reflection.html

文档是native.reflection.callStaticMethod

非常感谢你的帮助,可是我觉得应该不是native调用的问题,因为之前也是通过jsb调用,只不过之前的GameHelper的路径是entry/src/main/ets/helper/GameHelper.ets ,现在把这个GameHelper迁移到module_game的src/main/ets/helper/GameHelper.ets 中就不生效了。我不确定是鸿蒙的配置写法有问题,还是JS调用callStaticMethod方法时methodName这个参数传递的有误。methodName传递的结果是:module_game/具体方法名(不是module_game/GameHelper)

这个我当时是放在 entry/src/main/ets 文件夹下才能被 JS/TS 调用,你可以试试

嗯嗯 是的呢,放在entry目录下确实可以的,不过现在业务需要不能放在entry目录下了,所以我想从har包中引入,但是发现不太行,所以希望官方帮我看看,是不是哪里导入错了呢?

使用native接口,然后方法名不加module_game试试呢? 我看你的工程目录,接口是放在GameHelper里的? 那你的路径应该写成 “@ohos/module_game/ets/helper/GameHelper”?