eclipse+ADT使用第三方静态库及COCOS2d问题汇总
最近在搞安卓下的音视频通讯聊天,模块工程均完成后,需要由cocos搭起可执行程序的框架,在使用cocos及第三方静态库的过程中遇到了一些问题,由于自己是首次接触COCOS,再加上COCOS自身的问题,搞了整整一天,也终于算是搞透了;
环境:eclipse+ADT、cocos2d-x-3.5
一、cocos新工程的生成:
进入E:\OpenSource\cocos2d-x-3.5\tools\cocos2d-console\bin
按住shift键,右键空白处,打开命令窗口
使用命令cocos new创建,如:
cocos new -p com.example.mediagame -l cpp -d E:/CodeSpace/AVMeidaGame ProjectName
注:如果提示cocos 命令不存在,请先运行根目录下的setup.py文件(首先需要先按住 python.exe)或者直接打开此文件,一次添加相应的环境变量,然后重启explorer进程使环境变量生效即可。
二、加载静态库
加载静态库(C++,接口类),该静态库也是基于cocos进行开发的,最终生成一个.a文件,过程不再累述,本人首先使用的如下参数(Android.mk):
LOCAL_SRC_FILES:= $(LOCAL_PATH)\libs\libClientPublic.a
LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES := ClientPublic
在APP类代码中继承静态库中的一个父类,在ndk编译过程中报该父类的成员函数没有实现,问题很明显是该静态库没有正确加载成功所致,经查使用如下方式即可:
在include $(CLEAR_VARS)之前,加入如下命令,生成临时静态库
LOCAL_MODULE:= ClientPublic_static
LOCAL_MODULE_FILENAME := libClientPublic_static
LOCAL_SRC_FILES:=$(LOCAL_PATH)\libs\libClientPublic.a
include $(PREBUILT_STATIC_LIBRARY)
然后在下面适当位置加入加载此临时静态库即可
LOCAL_WHOLE_STATIC_LIBRARIES += ClientPublic_static
这时编译便OK了。
三、eclipse调试运行崩溃
在调试运行过程中出现莫名的崩溃问题,cocos的代码本人只是让APP类继承了静态库中的一个父类,完全没有理由会崩溃的呀,刚开始也是由于没有怀疑cocos自己生成的代码,所以也是浪费了大量的时间啊,最后通过adb抓取crash日志看到了程序崩溃点在Cocos生成的代码HelloWorldScene.cpp文件中使用了已经废弃的接口getContentSize(),调试发现该接口返回的值为无效值,导致在程序布局时为止无效,程序崩溃。
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height));
这里的代码大家自行修改掉即可。这个接口还真是坑人啊!
下面贴出adb抓入crash日志,并通过ndk-stack查看崩溃点的方法:
1,启动adb(D:\adt-bundle-windows\sdk\platform-tools),输入 adb logcat >d:\crash.log
2,启动通过eclipse启动apk,崩溃后在adb启动的cmd中按 ctrl+c,停止输出
3,启动ndk-stack (路径 D:\android-ndk-r9d)
命令格式为: ndk-stack -dmup d:\crash.log -sym obj文件路径
obj文件路径 为COCOS自建工程目录下的proj.android\obj\local\armeabi或者armeabi-v7a
ndk-stack输出建议输出至文本文件,这样看起来比在cmd中看起来方便
命令格式为: ndk-stack -dmup d:\crash.log -sym obj文件路径 >d:\crash_debug.log
本文出自 “大师兄” 博客,请务必保留此出处http://cto521.blog.51cto.com/9652841/1703098
转载于:https://my.oschina.net/superfather/blog/780215
eclipse+ADT使用第三方静态库及COCOS2d问题汇总相关推荐
- iOS架构-静态库.a之依赖第三方静态库.a的制作(8)
上一篇讲的是静态库.framework 依赖第三方库,是通过Cocoapod 提供的第三方库.而有时我们会依赖第三方.a 或者.framework 的.那么怎么样来制作依赖第三方.a 或者.frame ...
- Android NDK 使用第三方静态库(转)
源:Android NDK 使用第三方静态库 转载于:https://www.cnblogs.com/LittleTiger/p/4556382.html
- iOS静态库SDK制作(包含第三方静态库)
本文来自简书,原文地址:http://www.jianshu.com/p/155a3cfb765e 前言 以下所涉及的框架和库只针对iOS而言,不确保在其他平台也适用. 最近由于公司业务需要,要求封装 ...
- iOS静态库SDK制作(包含支付宝支付、微信支付或其它第三方静态库)
前言 以下所涉及的框架和库只针对iOS而言,不确保在其他平台也适用. 最近由于公司业务需要,要求封装一个支付SDK,需要用到微信支付和支付宝,之前做过的Framework没有依赖其他第三方的库所以比较 ...
- iOS开发中解决第三方静态库符号冲突的终极方案
iOS开发中解决第三方静态库符号冲突的终极方案 背景 在iOS开发的时候,经常会使用各种第三方静态库,这些库内部可能会打包了相同的第三方库.那么在链接的时候就会发生符号冲突. 例如:A厂商提供的lib ...
- iOS中引入第三方静态库头文件找不到的问题解决方案
在前几次项目中,因为要引入一些自己打包好的静态库,也就是第三方静态库,但是出了很多问题,有时会遇到莫名其妙的问题,明明有这个文件,但是就是显示头文件找不到.为了在以后能够快速处理这种问题,所以在这里做 ...
- android jni通过cmake使用第三方静态库和动态库
google 官方现在推荐使用cmake来构建jni. 本人正好工作需要使用第三方的静态库和动态库,写此文 权当做个记录. 首先修改app的build.gradle文件 ndk {abiFilter ...
- android打包规范包含第三方库aar,Android Studio 打包AAR和第三方静态库(示例代码)
需求 现在有一个第三方库libstatic_add.a和对应的头文件static.h,要求封装一个Module,该Module依赖这个静态库,要求打包的Module包含该静态库. 方案 创建Andro ...
- Android导入第三方静态库.a编译成动态库.so
http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己 ...
- android.bp编译生成so,Android导入第三方静态库.a编译成动态库.so
在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的 ...
最新文章
- JavaScript七种非常经典的创建对象方式
- 【多线程】join()和detach()的用法
- opencv python 图像测试上采样(升采样)(cv2.pyrUp()) 下采样(cv2.pyrDown()) 池化 滑动窗口(BorderTypes)
- Windows与Linux区别1
- Angulary应用依赖里的platform-browser
- 手把手教你如何配置DBeaver对接FusionInsigth MRS Spark2x
- pandas数据合并与重塑_PANDAS 数据合并与重塑(concat篇)
- 知识蒸馏在广告系统中的应用(一)
- 7种JVM垃圾收集器特点,优劣势、及使用场景
- 百度地震了,也许早晚的事
- 使用Gogs搭建Git服务器
- 记忆的酒坛里,辛苦会酿成充实和幸福
- 计算机中丢失pbvm80,修复pbvm80.dll
- VS code 尝试在目标目录创建文件时发生一个错误
- SQL 删除重复数据,重复数据只保留ID最小的行
- html连接有道词典api,调用有道翻译API
- 解决vscode进行chrome调试时报错:localhost拒绝了我们的连接请求
- PostgreSQL 二进制安装
- Cnopendata国家基金项目数据简介
- 大突破!人类有望饿死癌细胞