2dx2.2.6 游戏运行过程中崩溃,JniHelper错误

为了能在appstore上提交,今天将工程从从cocos2dx2.2.1升级到了2.2.6。在排除了各种各样的错误后终于能够build通过了。
之后在xcode下运行没有问题,但是试着用eclipse出包测试时发现问题。
编译可以通过,在
运行过程中,游戏突然崩溃,在遇见了关于jni的错误。

错误信息:
3-22 12:10:13.185: D/JniHelper(4074): Failed to find class of org/cocos2dx/lib/Cocos2dxHelper
03-22 12:10:13.237: A/art(4074): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI GetStaticMethodID called with pending exception ‘java.lang.ClassNotFoundException’ thrown in unknown throw location
03-22 12:10:13.237: A/art(4074): art/runtime/check_jni.cc:65] in call to GetStaticMethodID
03-22 12:10:13.237: A/art(4074): art/runtime/check_jni.cc:65] “Thread-363” prio=5 tid=20 Runnable

其他信息:
android.mk中
platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp
platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp
platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp
platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxAccelerometer.cpp
platform/android/jni/JniHelper.cpp

的确已经加入了这些文件。(而且我记得这个文件似乎只是在编译过程中会起作用?)

工程设置里C/C++ Build配置文件中NDK的路径没有问题,NDK版本是r10。

ADT版本是 v22.2.1-833290

Java version 是 “1.6.0_65”

网上没有搜到类似的问题,不知道在哪些方向上找问题,请前辈们指点一二。

不胜感激!

前辈们想到什么就说说什么,小弟实在没有任何头绪。

:6::6::6:
跪求解救呀!

这个应该是C++调java,找不到java类。具体的文件是org/cocos2dx/lib/Cocos2dxHelper。你看下这个文件有没有导入Eclipse(有没有导入libcocos2d,有没有这个文件)。

android.mk是在cocos2dx目录下。如果你是新生成的项目,默认已经添加你说的cpp文件。

另外几个问题:

你的项目有多大?你是如何升级的?是否有改过引擎?

没有改过引擎,但用的不是2.2.6自带的rapidjson,而是自己加入的jsoncpp库。

项目400多M,升级时直接用github将项目clone到2.2.6的project文件夹。
Clone后在xcode里修改了ios那边的配置文件,build run 都没发现问题。
然后用Eclipse导入,修改项目配置文件和android.mk中的路径。将cocos2dx\platform\android\java\src拷贝一份粘贴到工程proj.android/src下。
之后build通了,但是run的过程中出现上面描述的问题。

导入libcocos2d的话就是指“将cocos2dx\platform\android\java\src拷贝一份粘贴到工程proj.android/src下”么?还是说我落下了一步?

导入libcocos2d的话就是指“将cocos2dx\platform\android\java\src拷贝一份粘贴到工程proj.android/src下”么?还是说我落下了一步?

这是一种方法。另外也可以单独导入Eclipse。

哦哦,那个方法导入的方法我找到了。

现在已经解决了这个问题,原来是我网络和多线程中出现了些问题。
可能因为Cocos2dx本身就是不断的通过jni沟通java和C++,所以出了错误会反应在Jni上。

谢谢~

请问你是怎么解决的,能贴一下解决方法么?谢谢!

6楼谢了我出问题的地方, 你可以试着对文件加锁,或者将所有写文件操作都加到一个线程中。