3.8.7版本ArkTS 无法用evalString调用 Cocos 引擎脚本,uiPort无法受到evalString消息。

问题描述:ArkTS 无法用evalString调用 Cocos 引擎脚本,uiPort无法受到evalString消息。
场景:ArkTS测激励广告看完后通知Cocos测下发奖励
问题复现率:必现

我的代码:



根据console.log(“testTag”,‘evalString:’+callStr)无打印,判断uiPort无法受到evalString消息
参考的官方示例:

官方示例cocos_worker.ts监听evalString消息的方式与3.8.7导出的代码写法不一样

Creator 版本: 3.8.7
目标平台:HarmonyOS Next
手机型号:nova 12 pro
手机系统:harmonyOS NEXT 5.1.0.150 SP15
编辑器系统:macOS Sequoia(版本15.5)

V8 或者 JSVM 正常么?

构建时选的是JSVM

那应该没问题才对,我们测试过的,日志有错误么?

没有错误日志。补充说明:华为激励视频广告关闭后,游戏必然会卡住(也没有报错)。但这个不确定是原生端的问题,还是引擎的问题。

能帮忙弄个demo出来么?

你们测试时,使用的targetSdkVersion版本是多少

可以通讯的,一定是哪里弄错了

看起来没毛病啊,我也是这么写的,项目都上线了

那你的环境是怎样的:

Creator 版本: ?
构建时选择的Javascript引擎:?

DevEco Studio 版本:?
compatibleSdkVersion:?
targetSdkVersion:?

手机型号:?
手机系统版本:?

3.8.7
JSVM
DevEco Studio: Build Version: 5.1.0.849, built on August 13, 2025
compatibleSdkVersion: 5.0.3(15)

我使用的云测机进行测试的。

大佬有空帮我凑个活跃: https://appgallery.huawei.com/app/detail?id=com.px.starline

好的。我试下

3.8.7
JSVM
DevEco Studio: Build Version: 5.1.0.849, built on August 13, 2025
compatibleSdkVersion: 5.0.3(15)
手机mate60
手机系统:harmonyOS NEXT 5.1.0.150

本地测试可以正常调用。如图:


那估计是DevEco Studio版本的问题。我用的是6.0.0 Release。我降版本试下。

解决了。不是DevEco Studio版本问题,是arkts被调用的代码写法有问题。在有问题的代码中,Cocos 调用的是ats异步方法,导致游戏线程阻塞,也就是游戏卡住,同时ats异步方法内发给cocos_worker的消息,cocos_worker也无法受到消息。解决方式是,不使用异步。

错误代码示例:
Cocos测:


arkts测:

正确代码示例:
Cocos测:


arkts测:

解决就好,我这边使用的就是异步调用,也能成功,代码是你提供的