将代码添加到Android.mk时,Cocos2d-x崩溃

时间:2014-08-02 02:56:56

标签: android cocos2d-x cocos2d-x-3.0

我有可怕的麻烦迁移到Cocos2d-x 3.x.一切都在iOS上完美运行(当然它确实......)但在Android上启动时崩溃。

我得到的错误是:

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

我尝试了什么

首先,我尝试运行Cocos2d-x附带的cpp测试(来自cocos2d-x-3.2.zip的干净提取)。他们工作正常。

然后我尝试使用cocos命令从头开始创建一个新项目。它编译和工作。我尝试使用3.1和3.2。

然后我尝试将自己的源添加到此项目中。这是事情变得奇怪的地方。我可以添加一些文件,但添加它们都不起作用。即使代码从默认AppDelegate中得不到......同样的事情发生在3.1和3.2中。

对Android.mk的修改

我对proj.android/jni/Android.mk文件进行的唯一修改是将-fexceptions添加到APP_CPPFLAGS

对Android.mk的修改

我对proj.android/jni/Android.mk文件所做的唯一修改是添加这些行来搜索代码

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

并取消注释

LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static

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

因为我使用了新的ui名称空间中的一些小部件。

有什么问题?我无法解决这个问题......

1 个答案:

答案 0 :(得分:1)

您是否尝试过针对Android的调试版本? https://stackoverflow.com/a/24351602/629118您可能会获得SIGSEGV的堆栈跟踪。

  

然后我尝试将自己的源添加到此项目中。这是事情变得奇怪的地方。我可以添加一些文件,但添加它们都不起作用。即使代码从未被默认AppDelegate调来......

听起来你的消息来源可能有问题。即使应用程序的其他部分从未调用过源,也可能会发生这种情况。全局构造函数自动调用。此外,由于Android运行时,重新启动应用程序时永远不会清除静态变量。分裂和征服。尽可能少地添加代码,构建和启动。重复一遍。