2016-09-30 133 views
0
A/art(30231): art/runtime/check_jni.cc:65]  string: 'LevelScore11� 
art/runtime/check_jni.cc:65] ' 
art/runtime/check_jni.cc:65]  in call to NewStringUTF 
A/art(16684): art/runtime/check_jni.cc:65]  from void org.cocos2dx.lib.Cocos2dxRenderer.nativeRender() 
    A/art(16684): art/runtime/check_jni.cc:65] native: #08 pc 003e93f8 /data/app/com.xxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7_JNIEnv12NewStringUTFEPKc+40) 
    art/runtime/check_jni.`enter code here`cc:65] native: #09 pc 003efc8c /data/app/xxxxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_Z19setIntegerForKeyJNIPKci+112) 
    art/runtime/check_jni.cc:65] native: #10 pc 005cd8b8 /data/app/xxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7cocos2d11UserDefault16setIntegerForKeyEPKci+40) 
    art/runtime/check_jni.cc:65] native: #11 pc 003d62a8 /data/app/xxxxxxxxxxxx/lib/arm/libcocos2dcpp.so (???) 
    art/runtime/check_jni.cc:65] native: #12 pc 004553f4 /data/app/xxxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7cocos2d8CallFunc7executeEv+156) 
    art/runtime/check_jni.cc:65] native: #13 pc 0045534c /data/app/xxxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7cocos2d8CallFunc6updateEf+40) 

对于许多文件,我得到的错误在这个函数调用JNI NewStringUTF崩溃android系统

NewStringUTF功能

APP正在崩溃。

是否有更新的版本可用?我找到了这么多解决方案,但没有运气。谁能帮我?

预先感谢您。

+1

发布你创建的整个JNI调用,并导致这个崩溃,所以我们可以看到你做了什么。 – V01D1

+0

@IulianVărzaru我无法找到哪个文件导致错误 –

+0

第13个字符不是utf8字符,因此崩溃了NewStringUTF函数。尝试在创建字符串之前转储char *。 –

回答

1

从我可以从你的错误,因为你没有做任何其他与JNI似乎错误是,当你试图保存的整数UserDefaults发生看:

A/art(16684): art/runtime/check_jni.cc:65] native: #08 pc 003e93f8 /data/app/com.xxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7_JNIEnv12NewStringUTFEPKc+40) 
    art/runtime/check_jni.`enter code here`cc:65] native: #09 pc 003efc8c /data/app/xxxxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_Z19setIntegerForKeyJNIPKci+112) 
    art/runtime/check_jni.cc:65] native: #10 pc 005cd8b8 /data/app/xxxxxxxxxxx/lib/arm/libcocos2dcpp.so (_ZN7cocos2d11UserDefault16setIntegerForKeyEPKci+40 

因此,检查哪里您呼叫UserDefault到setIntegerForKey,如果你以某种方式将一个字符串,而不是一个int的,它应该是:

cocos2d::UserDefault::getInstance()->setIntegerForKey("key", 0); 

,或者如果你想保存的字符串:

cocos2d::UserDefault::getInstance()->setStringForKey("userCards", "value); 

UPDATE

好的尝试这一点,并在这里发表的结果,所以我们可以看到到底发生了什么:

cd $ANDROID_NDK 
adb logcat | ./ndk-stack -sym $PROJECT_PATH/obj/local/armeabi 

其中:

$ ANDROID_NDK是路径您android NDK

$ PROJECT_PATH是你的cocos2d-x android项目的路径

+0

谢谢你的帮助。但我没有在** setIntegerForKey **中设置任何字符串。此外,错误可能是以UTF-8编码,但无法找到解决方案。 你能告诉我在哪里可以找到我的** check_jni .cc **文件吗? –

+0

您正在保存任何内容到UserDefaults? – V01D1

+0

是的我在UserDefaults保存值,我保存整数值在setIntegerForKey ..我不保存setIntegerForKey中的任何字符串。 –