2012-06-07 33 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