环境:Cocos2d-x 3.9,Android Studio priview 2.0,ndk r10e(64位),win10(64位)。
Cocos-console似乎使用NDK将我的所有cpp组件编译成一个libcocos2dcpp.so文件。我设法编译了我的应用程序。它在win32上运行良好,但在Android上崩溃了。
I/DEBUG: Build fingerprint: 'samsung/h3gzc/hlte:5.0/LRX21V/N9006ZCUGOH2:user/release-keys'
I/DEBUG: Revision: '8'
I/DEBUG: ABI: 'arm'
I/DEBUG: pid: 2561, tid: 2561, name: Zzzen.YourWorld >>> com.github.Zzzen.YourWorld <<<
I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
I/DEBUG: r0 b4f512b0 r1 1fffffff r2 2e7e0d8d r3 b4f512b0
I/DEBUG: r4 00000043 r5 b4f18228 r6 a20f99e4 r7 00000000
I/DEBUG: r8 b4f07800 r9 b4efac64 sl bef10b58 fp bef10984
I/DEBUG: ip a275abd0 sp bef10978 lr a20f9a10 pc 00000000 cpsr 600f0010
I/DEBUG: #00 pc 00000000 <unknown>
I/DEBUG: #01 pc 00352a0c /data/app/com.github.Zzzen.YourWorld-1/lib/arm/libcocos2dcpp.so (JNI_OnLoad+40)
I/DEBUG: #02 pc 001d5357 /system/lib/libart.so (art::JavaVMExt::LoadNativeLibrary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, art::Handle<art::mirror::ClassLoader>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+1478)
I/DEBUG: #03 pc 001fd061 /system/lib/libart.so (art::Runtime_nativeLoad(_JNIEnv*, _jclass*, _jstring*, _jobject*, _jstring*)+548)
I/DEBUG: #04 pc 00019811 /system/framework/arm/boot.oat
所以我使用addr2line来查看00352a0c的内容。但是,它只显示了JNI_OnLoad。我应该在创建精灵之后添加断言,以防Sprite::create
可能返回nullptr
吗?