Сбой Android Cocos2d-x 3.14
Я пытаюсь запустить свою игру на Android, и приложение вылетает при запуске. На iOS все работает отлично. Я должен упомянуть, что я использую готовые библиотеки. Я попытался запустить приложение Hello World, и все работает отлично, но когда я пытаюсь с моей игрой, она вылетает, и я понятия не имею, почему. Я уже потратил 2 дня на это.
I / InstantRun: Мгновенный запуск Runtime запущен. Пакет Android - com.Organization.MyGame, класс реального приложения - null. W/art: верификация void org.cocos2dx.lib.Cocos2dxActivity.() Заняла 181.649ms W/art: верификация java.lang.Object org.cocos2dx.lib.Cocos2dxActivity.access$super(org.cocos2dos.lix.Cocos2dos.lib.C, java.lang.String, java.lang.Object[]) заняло 263,417 мс W / art: проверка java.lang.Object org.cocos2dx.cpp.AppActivity.access$super(org.cocos2dx.cpp.AppActivity, java.lang.String, java.lang.Object[]) заняло 209,483 мс D/JniHelper: JniHelper::setJavaVM(0xb4dbc000), pthread_self() = -1225696460 D/main: cocos_android_app_init D/Cocos2dxHelperH: LLOS: DL: Ложный sampleRate: 44100, framesPerBuffer: 1024 D/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp: nativeSetAudioDeviceInfo: sampleRate: 44100, bufferSizeInFrames: 1024 W/art: проверка файла java.lang.Object.lig.lig.lib.org.ResizeLayout, java.lang.String, java.lang.Object[]) заняло 574,918 мс W / art: проверка java.lang.Object org.cocos2dx.lib.Cocos2dxEditBox.access$super(org.cocos2dx.lib.Cocos2dxEditBox, java.lang.String, java.lang.Object[]) занимает 364,627 мс W / art: проверка java.lang.Object org.cocos2dx.lib.Cocos2dxGLSurfaceView.dcess.occess $ или.lib.Cocos2dxGLSurfaceView, java.lang.String, java.lang.Object[]) заняло 225,880 мс W / art: проверка логического значения org.cocos2dx.lib.Cocos2dxGLSurfaceView.onTouchEvent(android.view.MotionEvent) 235 заняла 235 Cocos2dxActivity: model=sdk_google_phone_armv7 D/Cocos2dxActivity: product=sdk_google_phone_armv7 D/Cocos2dxActivity: isEmulator=true 144.700 мс D/Cocos2dxActivity: onResume() D/OpenGLRenderer: использовать EGL_SWAP_BEHAVIOR_PRESERVED: true
[ 01-28 16:43:39.386 2413: 2413 D/ ] HostConnection::get() New Host Connection established 0xabcc3490, tid 2413 [ 01-28 16:43:39.419 2413: 2413 W/ ] Process pipe failed [ 01-28 16:43:40.071 2413: 2434 D/ ] HostConnection::get() New Host Connection established 0xabcc3308, tid 2434 I/OpenGLRenderer: Initialized EGL,
версия 1.4 E/EGL_emulation: tid 2434: eglSurfaceAttrib(1165): ошибка 0x3009 (EGL_BAD_MATCH) W/OpenGLRenderer: не удалось установить EGL_SWAP_BEHAVIOR на поверхности 0xab55dc60, ошибка =EGL_BAD_Rog_CHRED = 6 кадров! Приложение может выполнять слишком много работы в своем основном потоке. D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true I/ Хореограф: пропущено 41 кадр! Приложение может выполнять слишком много работы в своем основном потоке.
[ 01-28 16:43:45.183 958: 988 D/ ] HostConnection::get() New Host Connection established 0xabcc7e10, tid 988 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault
addr 0x0 в tid 2433 (GLThread 123) Отключен от целевой виртуальной машины, адрес: "localhost:8650", транспорт: "socket"
Любая помощь будет оценена. Большое спасибо!
3 ответа
Так что я потратил много времени, и это была действительно простая проблема, просто не понял этого. Проблема заключалась в том, что для Android мне пришлось добавить пути поиска или указать полный путь для всех ресурсов.
Почему это происходит? Я нашел следующее:
EGL_BAD_MATCH генерируется, если атрибут EGL_SWAP_BEHAVIOR, значение EGL_BUFFER_PRESERVED, а атрибут EGL_SURFACE_TYPE EGLConfig, используемый для создания поверхности, не содержит EGL_SWAP_BEHAVIOR_PRITERV.
Ссылка: eglSurfaceAttrib Группа khronos - это некоммерческая организация, которая предоставляет стандартный интерфейс OpenGL.
Как вы решаете это? В вашем эмуляторе Android вы можете использовать встроенную (аппаратную) видеокарту. Надеюсь, это поможет.
К сожалению, у меня недостаточно репутации, чтобы прокомментировать ваш вопрос.
Это может быть проблемой с предварительно собранными библиотеками, поэтому вы можете попробовать создать новый проект без использования предварительно собранных библиотек и посмотреть, разрешит ли это его. Если это так, то это проблема с предварительными сборками, в противном случае это может быть проблема с любым кодом, с которым вы запускаете. Если это так, если бы вы могли обновить свой вопрос с помощью кода, это было бы здорово!