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 (cocos2d-x-3.2.zip의 깨끗한 추출에서)와 함께 제공되는 cpp 테스트를 실행 해 보았습니다. 그들은 잘 작동합니다.
그런 다음 cocos
명령을 사용하여 처음부터 새 프로젝트를 만들려고했습니다 . 그것은 컴파일하고 작동합니다. 3.1과 3.2를 모두 사용하여 이것을 시도했습니다.
그런 다음이 프로젝트에 내 소스를 추가해 보았습니다. 이것은 상황이 이상 해지는 곳입니다. 일부 파일을 추가 할 수 있지만 모두 추가해도 작동하지 않습니다. DEFAULT 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의 스택 추적을 얻을 수 있습니다.
그런 다음이 프로젝트에 내 소스를 추가해 보았습니다. 이것은 상황이 이상 해지는 곳입니다. 일부 파일을 추가 할 수 있지만 모두 추가해도 작동하지 않습니다. DEFAULT AppDelegate에서 코드가 호출되지 않는 경우에도 ...
소스에 문제가있는 것 같습니다. 앱의 다른 부분이 소스를 호출하지 않은 경우에도 발생할 수 있습니다. 전역 생성자가 자동으로 호출됩니다. 또한 Android 런타임으로 인해 앱을 다시 시작할 때 정적 변수가 지워지지 않습니다. 그래서 나누고 정복하십시오. 코드를 가능한 한 적게 추가하고 빌드하고 실행하십시오. 반복하세요.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다