Вопрос

У меня ужасные неприятности, мигрирующие на 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
.

Что я пробовал

Сначала я попытался запустить тесты CPP, которые поставляются с Cocos2D-X (из чистой добычи 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? https://stackoverflow.com/a/24351602/629118 Вы можете получить трассировку стека SIGSEGV.

Тогда я пытался добавить свои собственные источники в этот проект.Это где вещи странно.Я могу добавить некоторые файлы, но добавление их всех не работает.Даже когда код никогда не вызывается из AppDelegate по умолчанию ...

Звучит, ваши источники могут возникнуть проблема.Это может произойти, даже если другая часть вашего приложения никогда не называла источники.Глобальный конструктор называется автоматически.Также из-за времени выполнения Android статические переменные никогда не очищаются при перезапуске приложения.Так разделить и побеждают.Добавьте свой код как можно меньше, построить и запустите.повторить это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top