Question

J'ai d'horribles problèmes pour migrer vers Cocos2d-x 3.x.Tout fonctionne parfaitement sur iOS (bien sûr...) mais plante au démarrage sur Android.

L'erreur que j'obtiens est la suivante :

********** Crash dump: **********
Build fingerprint: 'samsung/yakjuxw/maguro:4.2.1/JOP40D/I9250XWMA2:user/release-keys'
pid: 22977, tid: 22977, name: WOOOHOO  >>> WOOOHOO <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00  pc 00a33fd0  /data/app-lib/WOOOHOO-1/libcocos2dcpp.so (_JavaVM::GetEnv(void**, int)+28)
Stack frame #01  pc 00a34608  /data/app-lib/WOOOHOO-1/libcocos2dcpp.so (cocos2d::JniHelper::cacheEnv(_JavaVM*)+44)
Crash dump is completed

Ce que j'ai essayé

J'ai d'abord essayé d'exécuter les tests cpp fournis avec Cocos2d-x (à partir d'une extraction propre de cocos2d-x-3.2.zip).Ils fonctionnent bien.

Ensuite, j'ai essayé de créer un nouveau projet à partir de zéro en utilisant le cocos commande.Il compile et FONCTIONNE.J'ai essayé cela en utilisant à la fois 3.1 et 3.2.

PUIS j'ai essayé d'ajouter mes propres sources à ce projet.C'est là que les choses deviennent bizarres.Je peux ajouter certains fichiers, mais les ajouter tous ne fonctionne pas.MÊME LORSQUE LE CODE N'EST JAMAIS APPELÉ À PARTIR DE L'AppDelegate PAR DÉFAUT...La même chose se produit dans les versions 3.1 et 3.2.

Modifications apportées à Android.mk

La seule modification que j'ai apportée au fichier proj.android/jni/Android.mk consiste à ajouter -fexceptions à APP_CPPFLAGS.

Modifications apportées à Android.mk

Les seules modifications que j'ai apportées au fichier proj.android/jni/Android.mk consistent à ajouter ces lignes pour rechercher du code

CPP_FILE_LIST := $(LOCAL_PATH)/hellocpp/main.cpp
CPP_FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
CPP_FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/*.cpp)
CPP_FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/**/*.cpp)
CPP_FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/libs/jansson-2.6/*.c)
LOCAL_SRC_FILES := $(CPP_FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                    $(LOCAL_PATH)/../../Classes/map \
                    $(LOCAL_PATH)/../../Classes/menus \
                    $(LOCAL_PATH)/../../Classes/util \
                    $(LOCAL_PATH)/../../Classes/worlds \
                    $(LOCAL_PATH)/../../Classes/libs/jansson-2.6

et sans commentaire

LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static

$(call import-module,editor-support/cocostudio)

parce que j'utilise certains widgets du nouvel espace de noms de l'interface utilisateur.

Ce qui est faux?Je n'arrive pas à comprendre ça...

Était-ce utile?

La solution

Avez-vous essayé la version de débogage pour Android ? https://stackoverflow.com/a/24351602/629118 Vous pouvez obtenir une trace de pile du SIGSEGV.

PUIS j'ai essayé d'ajouter mes propres sources à ce projet.C'est là que les choses deviennent bizarres.Je peux ajouter certains fichiers, mais les ajouter tous ne fonctionne pas.MÊME LORSQUE LE CODE N'EST JAMAIS APPELÉ À PARTIR DE L'AppDelegate PAR DÉFAUT...

Il semble que vos sources pourraient avoir un problème.Cela peut arriver même si l'autre partie de votre application n'a jamais appelé les sources.Le constructeur global est appelé automatiquement.De plus, en raison du runtime Android, les variables statiques ne sont jamais effacées lors du redémarrage de l'application.Alors divisez pour régner.Ajoutez le moins possible votre code, construisez et lancez.répète.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top