【发布时间】:2014-08-02 02:56:55
【问题描述】:
我在迁移到 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 命名空间中的一些小部件。
怎么了?我想不通...
【问题讨论】:
标签: android cocos2d-x cocos2d-x-3.0