正在除錯公司遺留專案,win32平臺下弄些按鈕點擊會崩潰,貌似是某些引數沒有初始化
上面的問題暫時沒理會,然后移植到Android平臺,運行時出現標題中的錯誤,(cocos2dx3.2)
其他日志如下
12-02 10:03:25.918: W/System.err(1392): at com.tencent.permissionfw.permission.a.a(SourceFile:272)
12-02 10:03:25.918: W/System.err(1392): at tcs.awt$a.onTransact(SourceFile:127)
12-02 10:03:25.918: W/System.err(1392): at android.os.Binder.execTransact(Binder.java:404)
//---------------------------------------------------------------------
12-02 10:03:25.918: A/libc(23705): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 23734 (Thread-458)
12-02 10:03:25.918: W/System.err(1392): at dalvik.system.NativeStart.run(Native Method)
12-02 10:03:25.928: E/Parcel(794): Reading a NULL string not supported here.
12-02 10:03:25.978: D/dalvikvm(1339): GC_EXPLICIT freed 2001K, 13% free 16169K/18484K, paused 2ms+7ms, total 40ms
12-02 10:03:26.028: I/DEBUG(172): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-02 10:03:26.028: I/DEBUG(172): Build fingerprint: 'google/occam/mako:4.4.4/KTU84P/1227136:user/release-keys'
12-02 10:03:26.028: I/DEBUG(172): Revision: '11'
12-02 10:03:26.028: I/DEBUG(172): pid: 23705, tid: 23734, name: Thread-458 >>> com.any.iee <<<
12-02 10:03:26.028: I/DEBUG(172): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
12-02 10:03:26.138: I/DEBUG(172): r0 7596b0b8 r1 41ec0c68 r2 00000094 r3 75b7a000
12-02 10:03:26.138: I/DEBUG(172): r4 000004ac r5 44958000 r6 76851d80 r7 752ebe39
12-02 10:03:26.138: I/DEBUG(172): r8 75a79ae8 r9 7597bf28 sl 7596b300 fp 75a79afc
12-02 10:03:26.138: I/DEBUG(172): ip 75740f08 sp 75a79a70 lr 754d26c3 pc 00000000 cpsr 20070010
12-02 10:03:26.138: I/DEBUG(172): d0 aaa5aaa4aaa1aaa2 d1 aaa5aaa6aaa7aaa6
12-02 10:03:26.138: I/DEBUG(172): d2 aa9daa9eaa9faa9e d3 aaa3aaa2aaa1aaa0
12-02 10:03:26.138: I/DEBUG(172): d4 aa8daa8eaa8faa8e d5 aa93aa92aa91aa90
12-02 10:03:26.138: I/DEBUG(172): d6 aa95aa94aa91aa92 d7 aa95aa96aa97aa96
12-02 10:03:26.138: I/DEBUG(172): d8 0000000000000000 d9 0000000000000000
12-02 10:03:26.138: I/DEBUG(172): d10 0000000000000000 d11 0000000000000000
12-02 10:03:26.138: I/DEBUG(172): d12 0000000000000000 d13 0000000000000000
12-02 10:03:26.138: I/DEBUG(172): d14 0000000000000000 d15 0000000000000000
12-02 10:03:26.138: I/DEBUG(172): d16 3fd5555555555563 d17 3ff921fb60000000
12-02 10:03:26.138: I/DEBUG(172): d18 3fd18bc451eed100 d19 3fc3327cae1c406d
12-02 10:03:26.138: I/DEBUG(172): d20 0000000000000000 d21 3fabfa22ca212d85
12-02 10:03:26.138: I/DEBUG(172): d22 3f8261052f9fa3be d23 3f96ac9c0ec40323
12-02 10:03:26.138: I/DEBUG(172): d24 3f582b387b22f3c1 d25 3f6dcabc4571abc1
12-02 10:03:26.138: I/DEBUG(172): d26 3f30837711244472 d27 3f4375429245411f
12-02 10:03:26.138: I/DEBUG(172): d28 3fe279a74ffe43ec d29 3f1420ec8fb87f66
12-02 10:03:26.138: I/DEBUG(172): d30 bef375cbdb605373 d31 3f782d03241e5659
12-02 10:03:26.138: I/DEBUG(172): scr 2000001a
//------------------------------------------------------------------------------------------------
12-02 10:03:26.138: I/DEBUG(172): backtrace:
12-02 10:03:26.138: I/DEBUG(172): #00 pc 00000000 <unknown>
12-02 10:03:26.138: I/DEBUG(172): #01 pc 004f36bf /data/app-lib/com.any.iee-2/libcocos2dcpp.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+234)
12-02 10:03:26.138: I/DEBUG(172): #02 pc 0001dbcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
12-02 10:03:26.138: I/DEBUG(172): #03 pc 0004e123 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
12-02 10:03:26.138: I/DEBUG(172): #04 pc 0004fb0d /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+184)
12-02 10:03:26.138: I/DEBUG(172): #05 pc 00026fe0 /system/lib/libdvm.so
12-02 10:03:26.138: I/DEBUG(172): #06 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
12-02 10:03:26.138: I/DEBUG(172): #07 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
12-02 10:03:26.138: I/DEBUG(172): #08 pc 0006057d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
12-02 10:03:26.138: I/DEBUG(172): #09 pc 000605a1 /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
12-02 10:03:26.138: I/DEBUG(172): #10 pc 00055287 /system/lib/libdvm.so
12-02 10:03:26.138: I/DEBUG(172): #11 pc 0000d170 /system/lib/libc.so (__thread_entry+72)
12-02 10:03:26.138: I/DEBUG(172): #12 pc 0000d308 /system/lib/libc.so (pthread_create+240)
12-02 10:03:26.138: I/DEBUG(172): stack:
12-02 10:03:26.138: I/DEBUG(172): 75a79a30 75a79a20 [stack:23734]
12-02 10:03:26.138: I/DEBUG(172): 75a79a34 747981c5 /system/lib/egl/libGLESv2_adreno.so (glClearColor+30)
12-02 10:03:26.138: I/DEBUG(172): 75a79a38 00000021
12-02 10:03:26.138: I/DEBUG(172): 75a79a3c 00000018
之后用ndk的ndk-stack工具定位錯誤位置
結果是 工程目錄下cocos2d\cocos\platform\android中的javaactivity.cpp中的67行錯誤,以下是javaactivity.cpp
/****************************************************************************
Copyright (c) 2013-2014 Chukong Technologies Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "base/CCPlatformConfig.h"
#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
#include "CCApplication.h"
#include "base/CCDirector.h"
#include "base/CCEventCustom.h"
#include "base/CCEventType.h"
#include "renderer/CCGLProgramCache.h"
#include "renderer/CCTextureCache.h"
#include "2d/CCDrawingPrimitives.h"
#include "CCGLView.h"
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
#include <jni.h>
#define LOG_TAG "main"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
void cocos_android_app_init(JNIEnv* env, jobject thiz) __attribute__((weak));
using namespace cocos2d;
extern "C"
{
jint JNI_OnLoad(JavaVM *vm, void *reserved)
{
JniHelper::setJavaVM(vm);
return JNI_VERSION_1_4;
}
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h)
{
auto director = cocos2d::Director::getInstance();
auto glview = director->getOpenGLView();
if (!glview)
{
glview = cocos2d::GLView::create("Android app");
glview->setFrameSize(w, h);
director->setOpenGLView(glview);
cocos_android_app_init(env, thiz);//出錯位置
cocos2d::Application::getInstance()->run();
}
else
{
cocos2d::GL::invalidateStateCache();
cocos2d::GLProgramCache::getInstance()->reloadDefaultGLPrograms();
cocos2d::DrawPrimitives::init();
cocos2d::VolatileTextureMgr::reloadAllTextures();
cocos2d::EventCustom recreatedEvent(EVENT_RENDERER_RECREATED);
director->getEventDispatcher()->dispatchEvent(&recreatedEvent);
director->setGLDefaultValues();
}
}
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnSurfaceChanged(JNIEnv* env, jobject thiz, jint w, jint h)
{
cocos2d::Application::getInstance()->applicationScreenSizeChanged(w, h);
}
}
#endif // CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
錯誤的函式在obj.android/jni/hellocpp中的main.cpp中,以下是main.cpp
#include "AppDelegate.h"
#include "cocos2d.h"
#include "platform/android/jni/JniHelper.h"
#include <jni.h>
#include <android/log.h>
#define LOG_TAG "main"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
using namespace cocos2d;
void cocos_android_app_init (JNIEnv* env, jobject thiz) {
LOGD("cocos_android_app_init");
AppDelegate *pAppDelegate = new AppDelegate();
}
搞了一周了,沒弄出來,快瘋了。開始有人標題的錯誤是資源沒找到,但是assets中的資源是eclipse運行時ndk自動復制過來的。還有人說是資源路徑大小寫沒區分,我也檢查了一部分,都區分了(量很大,所以只檢查了最先呼叫的幾個資源)
求大神指點!!!!!!!!!!!!!!!!!!
uj5u.com熱心網友回復:
只能說某個地方野指標了,具體在什么地方要看你的代碼怎么實作了,反正不會在你貼出來的代碼里。uj5u.com熱心網友回復:
這是cocos2dx.so內部產生的錯誤,仔細檢查c++代碼,再者看一下當前用的ndk與你win32平臺下的開發工具是否一致,有些ndk不支持c++11新特性的轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/64417.html
標籤:Cocos2d-x
