2012-06-07 2 views
3

Je travaille sur linux + éclipse.Exception mise à jour de jeu à cocos2d-x v2.0

J'ai mis à jour mon code suivant les étapes indiquées par le wiki.

1º Je crée un nouveau projet eclipse. 2º Je cours Bonjour tout le monde et ça marche. 3º J'ai mis mon ancien code sur Classes et ressources. 4º Je mets à jour appdelegate.cpp .h, et jni/Android.mk avec de nouveaux fichiers. 5º Compiler correctement.

6º de mise à l'eau eclipse je reçois l'exception suivante:

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

Quelque chose ne va pas, mais je ne sais pas ce qui se passe.

Le même code fonctionne sur un projet xcode.
Je ne reçois pas le message CCLOG constructeur con Appdelegate, et Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit sur main.cpp non plus.

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

j'essayer de compiler dans un autre comprimé (un Android 3.2) Et j'obtenir le même problème. Cette fois, le journal est:

06-12 15: 16: 16,610: I/DEBUG: * * 06-12 15: 16: 16,610: I/DEBUG: empreintes digitales construire: « 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

Donc, le signal 11 SEGV_MAPERR, je suppose que c'est un problème avec la compilation, la bibliothèque est trouvée, mais le programme ne peut pas le charger correctement. Le JNI n'exécute pas jni_Onload.

Une idée ???

Merci d'avance.

+2

Je pense que vous pourriez trouver un bug cocos2d-x.Habituellement, lorsque votre code peut compiler à la fois sur xcode et ndk, et recevoir un signal fatal uniquement sur une plate-forme, cela signifie que quelque chose ne va pas avec le framework. Vous avez reconstruit votre code source en utilisant ./build_native.sh dans le nouveau dossier de projet, n'est-ce pas? Je n'ai pas fusionné mon code à 2.0 puisqu'il n'est pas assez stable et à beaucoup de changements de code tels que CCTouchDispatcher est déplacé dans CCDirector, etc. N'a pas pu aider beaucoup. –

+1

Oui, j'ai essayé de reconstruire 3 fois. Et créez un nouveau projet 3 fois aussi. Cela m'est arrivé pour la première fois sur le projet XCode, mais la deuxième fois a bien fonctionné. Je ne sais pas ce qui était différent – vgonisanz

Répondre

3

Comme vous obtenez signal fatal 11 peut-être que vous voulez jeter un oeil à this. Il s'agit d'une erreur de segmentation, qui accède à un emplacement de mémoire qui n'a pas été affecté, généralement en raison d'un bogue de programmation.

Bonne chance, mais certaines personnes ont aucun problème avec la nouvelle version le cas le plus probable est que vous avez un bug que la programmation ancienne version ne donnait pas de problèmes.

+0

Le problème est, la bibliothèque n'est pas chargée, dans 1 cas, log cat dire: 06-13 18: 29: 07.199: D/dalvikvm (11613): Ajout de lib partagé /data/data/pipero.corporation.nyan/lib /libgame.so 0x40f87190; mais quand j'utilise mon code ne pas apparaître cette ligne, donc, lib n'est pas chargé, donc, la segmentation 11 parce que les fonctions ne sont pas trouvées. – vgonisanz

+2

Regardez si vous avez les librairies, si vous en avez, essayez de changer le chemin en un plus simple, juste au cas où. Je n'aime pas penser que c'est un bug cocos-2d, je pense toujours que c'est de ma faute, mais qui sait ... –

3

dans votre dossier de projet, vérifiez que le fichier lib est en fait dans votre dossier android libs.

[racine cocos2d-x]/[GAME_NAME]/android/libs

Il devrait y avoir un fichier appelé libgame.so intérieur là.

S'il se compile correctement, le fichier .so doit être généré. Lorsque vous compilez, je trouve qu'il est utile de "rafraîchir" le projet dans eclipse afin qu'eclipse réécrit les répertoires pour les nouveaux fichiers/modifications à empaqueter dans le fichier APK pour le déploiement.

Il y a une option que vous pouvez activer dans Eclipse pour détecter automatiquement les modifications du système de fichiers, je crois, mais je ne suis pas sûr que les options où est.

+0

Merci pour votre réponse. Les libgame.so existent dans le dossier libs/armeabi, j'ai essayé de les rafraîchir, mais ça se passe la même chose. – vgonisanz

+0

Que diriez-vous de votre activité de lancement en Java land (celle qui étend Cocos2dxActivity)? Avez-vous un static {System.loadLibrary ("game"); } quelque part là-dedans? C'est la seule chose à laquelle je peux penser. – irwinb

+0

static { System.loadLibrary ("game"); } est utilisé sur le java général, à l'intérieur de l'onCreate. Le projet généré automatiquement fonctionne (utilisez aussi libgame.so) mais en changeant le code pour le mien, ne fonctionne pas. – vgonisanz

Questions connexes