关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号。Windows平台上表现非常正常,没有出现什么问题。
上周五准备公布一个安卓包,编译非常轻松的就过了,没有花费多少时间,可是安装到手机后,发现执行就崩溃了。没办法仅仅好用模拟机调试,再次吐槽Android的模拟器,真的太他妈慢了,不到万不得已我真的不想再去用它,google真的应该好好整一下了。
好不easy执行起来了,看到崩溃的时候logcat的报错是“unable to load native library XXX”,莫名其妙的报错,看样子好像是程序安装的问题,可是我查看了文件系统,有这个so文件。找了好久都没发现问题所在,最后在一个国外的站点看到了答案,主要是cocos-2dx库的java部分代码改变了,程序创建时候的Activity的继承类变了,从NativeActivity编程了Cocos2dxActivity了。大家不知道怎样改就直接把cocos2dx下演示样例下的Activity拖过来就可以。
改过来之后还是继续崩溃,只是报错信息变了,“Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)”,在网上查了非常多,到处都是引用的以下这篇文章,可是这篇文章根本不能解决我的问题。
cocos2dx fatal signal11(SIGSEGV) at 0x00000000(code=1)的解决实践
我加了非常多打印,都没打印出来,预计如网上全部,可能是JNI的问题,只是有了上面的经验,突然想到是不是jni入口也改变了呢,对照了我的版本号的main.cpp文件和演示样例版本号的main.cpp,发现果然是入口文件版本号的改动导致,把演示样例的main.cpp里面的代码复制过来,再编译,顺利进入游戏!
发现网上搜索这些报错的非常多,所以记录下来,为其它可能出现这些问题的同学提供一些帮助吧。
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)