Android 将游戏更新为cocos2d-x v2.0时出现异常

Android 将游戏更新为cocos2d-x v2.0时出现异常,android,java-native-interface,shared-libraries,cocos2d-x,Android,Java Native Interface,Shared Libraries,Cocos2d X,我正在linux+eclipse上工作 我已经按照wiki提供的步骤更新了代码 1º我创建了一个新的eclipse项目。 2º我运行hello world,它工作正常。 3:我将旧代码放在类和资源上。 4º我用新文件更新appdelegate.cpp.h和jni/Android.mk。 5º编译正确 从eclipse启动6º时,我遇到以下异常: trying to load lib /data/data/org.pipero.game/lib/libgame.so Fatal signal 11

我正在linux+eclipse上工作

我已经按照wiki提供的步骤更新了代码

1º我创建了一个新的eclipse项目。 2º我运行hello world,它工作正常。 3:我将旧代码放在类和资源上。 4º我用新文件更新appdelegate.cpp.h和jni/Android.mk。 5º编译正确

从eclipse启动6º时,我遇到以下异常:

trying to load lib /data/data/org.pipero.game/lib/libgame.so Fatal signal 11. 正在尝试加载lib/data/data/org.pipero.game/lib/libgame.so 致命信号11。 有点不对劲,但我不知道发生了什么事

相同的代码在xcode项目上工作。
我没有在Java_org_cocos2dx_lib_cocos2dx renderer_nativeInit上获得CCLOG消息con-Appdelegate构造函数,main.cpp上也没有

日志:

---- LOG TEST RUNNING HELLO WORLD ------ 06-13 18:29:07.189: D/dalvikvm(11613): Trying to load lib /data/data/pipero.corporation.nyan/lib/libgame.so 0x40f87190 06-13 18:29:07.199: D/dalvikvm(11613): Added shared lib /data/data/pipero.corporation.nyan/lib/libgame.so 0x40f87190 06-13 18:29:07.269: W/apk path(11613): /data/app/pipero.corporation.nyan-2.apk 06-13 18:29:07.409: D/SurfaceView(11613): pckname = pipero.corporation.nyan 06-13 18:29:07.809: D/libEGL(11613): loaded /system/lib/egl/libGLES_android.so 06-13 18:29:07.859: D/libEGL(11613): loaded /system/lib/egl/libEGL_mali.so 06-13 18:29:07.919: D/libEGL(11613): loaded /system/lib/egl/libGLESv1_CM_mali.so 06-13 18:29:07.929: D/libEGL(11613): loaded /system/lib/egl/libGLESv2_mali.so ------------------------------------- OK ------------------------------- ---- LOG TEST RUNNING TEST changing android files to mine ------ 06-13 18:36:31.789: D/dalvikvm(12046): Trying to load lib /data/data/pipero.corporation.nyan/lib/libgame.so 0x40f8de18 06-13 18:36:31.799: A/libc(12046): Fatal signal 11 (SIGSEGV) at 0x00000030 (code=1) --------------------------------------- FAIL -------------------------- ----运行helloworld的日志测试------ 06-13 18:29:07.189:D/dalvikvm(11613):尝试加载lib/data/data/pipero.corporation.nyan/lib/libgame.so 0x40f87190 06-13 18:29:07.199:D/dalvikvm(11613):添加了共享lib/data/data/pipero.corporation.nyan/lib/libgame.so 0x40f87190 06-13 18:29:07.269:W/apk路径(11613):/data/app/pipero.corporation.nyan-2.apk 06-13 18:29:07.409:D/SurfaceView(11613):pckname=pipero.corporation.nyan 06-13 18:29:07.809:D/libEGL(11613):loaded/system/lib/egl/libGLES_android.so 06-13 18:29:07.859:D/libEGL(11613):loaded/system/lib/egl/libEGL_.so 06-13 18:29:07.919:D/libEGL(11613):loaded/system/lib/egl/libGLESv1_CM_mali.so 06-13 18:29:07.929:D/libEGL(11613):loaded/system/lib/egl/libGLESv2_.so -------------------------------------嗯------------------------------- ----日志测试运行测试将android文件更改为我的------ 06-13 18:36:31.789:D/dalvikvm(12046):尝试加载lib/data/data/pipero.corporation.nyan/lib/libgame.so 0x40f8de18 06-13 18:36:31.799:A/libc(12046):0x00000030(代码=1)处的致命信号11(SIGSEGV) ---------------------------------------失败-------------------------- 我曾尝试在另一款平板电脑(安卓3.2)上编译,我也遇到了同样的问题。这次日志是:

06-12 15:16:16.610:I/DEBUG:** 06-12 15:16:16.610:I/DEBUG:构建指纹:“asus/WW_epad/TF101:3.2.1/HTK75/WW_epad-8.6.5.13-20110925:用户/发布密钥” 06-12 15:16:16.610:I/DEBUG:pid:1183,tid:1183>>>pipero.corp.test 因此,signal 11 SEGV_MAPERR,我假设编译有问题,找到了库,但程序无法正确加载它。JNI不执行JNI_Onload

有什么想法


提前感谢。

在您的项目文件夹中,仔细检查lib文件是否确实在您的android libs文件夹中

[cocos2d-x root]/[game_name]/android/libs

里面应该有一个名为libgame.so的文件

如果编译正常,则应生成.so文件。编译时,我发现在eclipse中“刷新”项目很有帮助,这样eclipse就可以重新扫描目录,以便将任何新文件/修改打包到APK文件中进行部署


我相信,您可以在eclipse中启用一个选项来自动检测文件系统更改,但我不确定该选项在哪里。

当您收到致命信号11时,您可能想看看。这是一个分段错误,访问未分配的内存位置,通常是由于编程错误


祝你好运,但由于有些人对新版本没有问题,最有可能的情况是你有一个编程错误,而旧版本没有问题。

我想你可能会发现cocos2d-x错误。通常,当您的代码可以在xcode和ndk上编译,并且只在一个平台上收到致命信号时,意味着框架有问题。您确实在新项目文件夹中使用./build_native.sh重新构建了源代码,对吗?我还没有将我的代码合并到2.0,因为它不够稳定,而且许多代码更改(如CCTouchDispatcher被移到CCDirector中等)都没有多大帮助。是的,我尝试了3次重建。并且创建一个新项目3次。我第一次在XCode项目上遇到这种情况,但第二次效果很好。我不知道有什么不同谢谢你的回答。libgame.so存在于libs/armeabi文件夹中,我尝试过刷新,但发生了相同的事情。在Java land中启动活动(扩展Cocos2dxActivity的活动)内部如何?你有一个静态的{System.loadLibrary(“game”);}吗?这是我能想到的唯一一件事..静态{System.loadLibrary(“game”);}在onCreate中的通用java上使用。自动生成的项目可以正常工作(使用太多libgame.so),但更改我的代码不起作用。问题是,库没有加载,在1种情况下,日志cat说:06-13 18:29:07.199:D/dalvikvm(11613):添加了共享库/data/data/pipero.corporation.nyan/lib/libgame.so 0x40f87190;但是当我使用我的代码时,没有出现那一行,所以,lib没有加载,所以,segmentation 11因为找不到函数。如果你有库,如果你有库,尝试将路径更改为更简单的路径,以防万一。我不喜欢认为这是cocos-2d错误,我总是认为这是我的错,但谁知道。。。