2012-06-07 31 views
3

我正在使用linux + eclipse。异常更新游戏到cocos2d-x v2.0

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

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

6º从日食空空,我得到以下异常:

 
trying to load lib /data/data/org.pipero.game/lib/libgame.so 
Fatal signal 11. 

东西是错的,但我不知道发生了什么。

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

的logcat:

 
---- 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 -------------------------- 

我已经尝试在其他平板电脑(版本的Android 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:user/release-keys' 06-12 15:16:16.610:I/DEBUG:pid:1183,tid:1183 >>> pipero.corp.test

因此,信号11 SEGV_MAPERR,我认为是编译问题,找到库,但程序无法正确加载它。 JNI不执行jni_Onload。

一些想法?

在此先感谢。

+2

我想你可能会发现一个cocos2d-x错误。通常当你的代码可以在xcode和ndk上编译,并且只在一个平台上收到致命的信号时,意味着框架出了问题。你在新的项目文件夹中使用./build_native.sh重新构建了源代码?我没有将我的代码合并到2.0,因为它不够稳定,并且许多代码更改(例如CCTouchDispatcher被移入CCDirector等)无法提供帮助。 –

+1

是的,我试图重建3次。并创建一个新的项目3次。第一次发生在XCode项目上,但第二次工作正常。我不知道什么是不同的 – vgonisanz

回答

3

当你收到致命的信号11或许你想看看this。这是一个分段错误,通常是由于编程错误而访问未分配的内存位置。

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

+0

问题是,该库未加载,1例中,log cat说:06-13 18:29:07.199:D/dalvikvm(11613):添加了共享库/data/data/pipero.corporation.nyan/lib /libgame.so 0x40f87190;但是当我使用我的代码时,没有出现该行,所以,lib没有加载,因此,分割11因为找不到函数。 – vgonisanz

+2

看看你是否有库,如果你有它们,试着改变路径到更简单的路径,以防万一。我不喜欢认为这是一个cocos-2d错误,我总是认为这是我的错,但是谁知道...... –

3

在你的项目文件夹中,仔细检查lib文件是否在你的android libs文件夹中。

[cocos2d的-X根]/[GAME_NAME] /机器人/库

应该有称为libgame.so里边有一个文件。

如果编译好了,应该生成.so文件。在编译时,我发现在eclipse中“刷新”项目会很有帮助,因此eclipse会重新扫描任何新文件/修改的目录,以打包到APK文件中进行部署。

有一个选项可以在eclipse中自动检测文件系统的变化,但我不确定选项在哪里。

+0

感谢您的回答。 libgame.so存在libs/armeabi文件夹中,我尝试刷新,但它发生的是同样的事情。 – vgonisanz

+0

在Java土地(可扩展Cocos2dxActivity的项目)的启动活动内部如何?你有一个 static {System.loadLibrary(“game”); } 在那里的某个地方?这是我唯一能想到的。 – irwinb

+0

static {0} {0} }用于onCreate内的通用java。生成的项目自动生效(使用libgame.so),但更改我的代码,不起作用。 – vgonisanz