java调用runOnGLThread闪退问题

java内做如下调用会闪退:

this.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxJavascriptJavaBridge.evalString(“cc.log(“Javascript Java bridge!”)”);
}
});

无论上述代码放在onCreate还是onStart里都会闪退!

log如下:

04-09 13:50:38.471 13716-13716/? I/DEBUG: pid: 19276, tid: 19293, pkg name: com.rgtechsdk.service
04-09 13:50:38.471 13716-13716/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-09 13:50:38.471 13716-13716/? I/DEBUG: Build fingerprint: ‘samsung/ja3gxx/ja3g:4.4.2/KOT49H/I9500XXUFNC1:user/release-keys’
04-09 13:50:38.471 13716-13716/? I/DEBUG: Revision: ‘0’
04-09 13:50:38.471 13716-13716/? I/DEBUG: pid: 19276, tid: 19293, name: Thread-1346 >>> com.rgtechsdk.service <<<
04-09 13:50:38.471 13716-13716/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000f94
04-09 13:50:38.471 1863-1974/? W/NativeCrashListener: Couldn’t find ProcessRecord for pid 1885955130
04-09 13:50:38.501 13716-13716/? I/DEBUG: eax 00000000 ebx 00000f94 ecx 00000000 edx 00000f94
04-09 13:50:38.501 13716-13716/? I/DEBUG: AM write failure (32 / Broken pipe)
04-09 13:50:38.501 13716-13716/? I/DEBUG: esi 00000004 edi 00000001
04-09 13:50:38.501 13716-13716/? I/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 00000043 xss 0000007b
04-09 13:50:38.501 13716-13716/? I/DEBUG: eip 8a0895bd ebp 1a226e9c esp 1a226e64 flags 00210246
04-09 13:50:38.501 13716-13716/? I/DEBUG: backtrace:
04-09 13:50:38.501 13716-13716/? I/DEBUG: #00 pc 000b15bd /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #01 pc ffffffff
04-09 13:50:38.501 13716-13716/? I/DEBUG: #02 pc 000c9957 /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #03 pc 0059cceb /data/app-lib/com.rgtechsdk.service-1/libcocos2djs.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #04 pc 000c8ede /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #05 pc 0001b38f
04-09 13:50:38.501 13716-13716/? I/DEBUG: #06 pc 000b2247 /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #07 pc 0010202f [stack:19292]
04-09 13:50:38.501 13716-13716/? I/DEBUG: #08 pc 000aeea7 /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #09 pc 0059cd47 /data/app-lib/com.rgtechsdk.service-1/libcocos2djs.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #10 pc 000ae88c /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: #11 pc ffffffff
04-09 13:50:38.501 13716-13716/? I/DEBUG: #12 pc 000fdb2c /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: stack:
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e24 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e28 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e2c 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e30 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e34 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e38 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e3c 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e40 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e44 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e48 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e4c 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e50 00000000
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e54 8a226fc4 /system/lib/lib3btrans.so
04-09 13:50:38.501 13716-13716/? I/DEBUG: 1a226e58 00000000

注释掉Cocos2dxJavascriptJavaBridge.evalString(“cc.log(“Javascript Java bridge!”)”);后可以正常运行。

creator 版本为v2.0.7.

改为runOnUiThread试试看呢

runOnUiThread试了不得行,而且官方文档上要求用runOnGLThread的。

官方出来解释一下,是不是v8的问题?啊

这个接口需要等引擎初始化完成,才能调用!

什么时机调用比较好呢。activity的oncreate,onstart,onresume,哪个阶段合适。

可以使用反射,从JS调用JAVA方法,来触发代码。

这个操作不符合我的需求,我的需求是,特定事件发生后由java通知js,比如广告等事件。所以,必须要由java调用js。

那就JS层采用每帧轮训机制去遍历上层触发的事件,不然你要理解cocos native层的运行机制才能实现!

这个操作是想过,很烦。请问,在creator以前的版本中,是否可以java调用js呢,比如1.7版本以后

应该都支持的

可以提供一个最新支持java调用js的creator版本吗?我目前用的是2.0.7的版本。

官网上可以下载,最新2.0.9

谢谢,试试先。

楼主,看到你这种标题,我就TMD很不爽,你懂的。
相互尊重吧。

3赞

我也很不爽啊,你懂就好。

先做人再做事

如果兄弟你有解决的办法请赐教,如果没有的话,请闭嘴。

会,不过嘴已经闭上了,瑟瑟发抖中。。。

和气生财