Eclipse + ndk+ cocos2dx 调试Cocos2dx 程序
本文是我自己尝试通过eclipse来在windows平台下搭建cocos2dx的过程,期间遇到了一些问题,都是通过网上借鉴别人的博文来解决的,下面也列出来这些参考文献。写下来的目的主要是自己以后要用的时候也好参考,也方便别人要搭建的时候少走弯路。
一 、相关的工具
1.NDK R7版本以上(不需要用到Cygwin,因为R7版本以上的NDK集成了我们需要用到Cygwin的功能:编绎C++(打包cocos2d-x文件,编绎SO))
2.google 官网下载的Eclipse ADT(已搭建android环境:包括NDK的路径,等等)
3.Cococs2d-x 2.0 - 2.0.4 以上版本
4、安装NDK Plugin
弹出的窗口里第一个框”Work with:“后面输入https://dl-ssl.google.com/android/eclipse/
- 稍等一会,下面会出来”Developer Tools”和”NDK Plugins”,全部选中,Next,同意协议,等安装完成后,重启eclipse
- eclipse重启后,到Eclipse->Preferences->Android->NDK,在这里设置你的NDK目录,比如我的,我设置到/android/android-ndk-r8e
- 打开eclipse,在菜单里选择Help->Install New Software…
二、编译
1、使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件
我这边采用的脚本生成的编译命令,配置方法如下
2、 拷贝相关的源文件到
To fix this error, copy [cocos2d-x]/cocos2dx to [ndk-dir]/sources/.
And move directories under cocos2dx/platform/third_party/android/prebuilt/ to [ndk-dir]/sources/.
After that, additional directories include cocos2dx, libcurl, libjpeg, libpng, libtiff and libwebp will under [ndk-dir]/sources/.
上面是引用的cocos2dx官方论坛的原话,意思是将NDK编译需要用到的cocos2dx相关的源文件拷贝到NDK的sources目录下面,不同的cocos2dx版本可能拷贝的文件不一样。
3、因为是调试C++,需要将Eclipse调整到C++视图。
a、增加一些必要的头文件Include:
右键项目名称,选择Properties,展开c++ General选择Path and Symbols,点击Includes标签项,选中Assembly,点击add按钮,在弹出对话框中填入如下路径:
ndk放置目录\android-ndk-r8c\platforms\android-8\arch-arm\usr\include
cocos2dx放置目录\cocos2d-2.0-x-2.0.3\CocosDenshion\include
cocos2dx放置目录\cocos2d-2.0-x-2.0.3\cocos2dx\include
b、切换到Source Location标签,点击Link Folder按钮,如下图,选中后再点击Browse按钮,在弹出的对话框中选择以下路径,
cocos2dx放置目录\cocos2d-2.0-x-2.0.3\samples\SimpleGame\Classes(这里只是举例,实际上这个目录是你用create android project这个脚本生成的android项目里面的Classes文件夹的路径)
cocos2dx放置目录\cocos2d-2.0-x-2.0.3\cocos2dx
当然这里还有可能的是你需要的一些其他的目录,你需要的源文件都可以把它link进来,我这边把刚刚拷贝到NDK sources目录下面的文件都link进来了。
c、c++ General项,选中Code Analysis,设置如下图所示,要求一模一样。设置这个的目的是因为eclipse cdt插件对代码解析不够好,很多正确的代码会解析成错误的提示出来,导致无法编译。
三、 调试过程中遇到的问题
1、eclipse中出现Type 'xxxx' could not be resolved的处理方法
解决方法:直接上图就明白了,修改工程的indexer属性就OK了
2、Unknown Application ABI: 错误
2013-08-15 11:16:14 - MyProject] Unknown Application ABI:
[2013-08-15 11:16:14 - MyProject] Android
[2013-08-15 11:16:14 - MyProject] Unknown Application
Android NDK: jni/../../cocos2dx/cocos2dx/Android.mk: Cannot find module with tag 'libjpeg' in import path
Android NDK: jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path
解决方法:
在android.mk的importmodel前,加入path的设置:
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d-x-2.1.4)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d-x-2.1.4/cocos)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d-x-2.1.4/external)
$(call import-module,2d)
。。。。注意上面加入的三行,是根据cocos2dx的版本来的,不是所有的版本都是同样的写法,根据不同的版本进行配置。
3、选择debug as andriod native application, 无法打开设备, 弹出 java nullpointer exception.
目前我也没有办法解决,我都是先打开模拟器,然后再点击 debug
as andriod native application,可以进入调试界面。
4、进入调试界面无法下断点。
主要是因为程序配置多个默认的ABI,多个ABI有可能导致GDB无法找到正确的调试文件。
在我的andriod工程的local 目录下面,obj目录下面有两个文件夹,可能是不同硬件平台对应的调试文件吧(我猜的)。因为我们要调试,所有要指定一个唯一的平台。
方法是修改Application.mk,增加下面的几行:
APP_CFLAG := -g -ggdb -O0
APP_ABI := armeabi-v7a 指定唯一的ABI
APP_OPTIM := debug
参考文献:
1、andriod.mk语法介绍
http://www.cnblogs.com/likwo/archive/2012/05/09/2492614.html
2、调试:
http://www.aiseminar.cn/bbs/home.php?mod=space&uid=3&do=blog&id=2735
http://www.cocos2d-x.org/wiki/How_to_debug_cocos2d-x_games
http://blog.csdn.net/yc1404/article/details/8572940
http://blog.csdn.net/wutianyin222/article/details/8222838
http://wiseideal.iteye.com/blog/1963921
http://blog.csdn.net/we000636/article/details/8585436
http://blog.csdn.net/wangbofei/article/details/7951362
http://blog.csdn.net/yixiaoqingyuz/article/details/8269726
Eclipse + ndk+ cocos2dx 调试Cocos2dx 程序的更多相关文章
- 谈使用Eclipse与DDMS调试Android程序的方法
在Eclipse开发工具中调试程序的方法很多,但是使用Eclipse调试Android程序时需要注意一些细节上的问题.许多刚接触 Android的开发者,在调试Android程序时总是不能迅速地找到程 ...
- Eclipse开发工具的使用之-使用Eclipse的Debug调试Android程序
1.设置断点,双击Eclipse编辑界面的边界,或者右击编辑界面的边界,快捷键Ctrl+Shift+B. 2.F11键开始调试程序,程序安装到手机之后,并不会自动运行,需要你手动运行到断点处. 3.运 ...
- eclipse 附加进程调试java程序(转)
转自:http://blog.csdn.net/zhoushenghuang/article/details/54485645 第一步,启动Java程序时需要设置JVM参数 右击java项目-> ...
- eclipse 远程wifi调试android程序
[原文]http://leanote.com/blog/view/541f8b2dbda4e44f75000000 下载wifidebug http://pan.baidu.com/s/1i3stnF ...
- Mac eclipse 编译、调试c++ 程序
可以先安装个CDT插件: eclipse菜单 -> Help -> Install New Software... -> Work with (Add..) Name:CDT Loc ...
- eclipse/idea远程调试Linux程序
第一步.在Tomcat的bin目录下的startup.sh文件的倒数第二行增加“JPDA_ADDRESS=8787”,最后一行在start的前边增加“jpda”,之后重启Tomcat 第二步.配置Ec ...
- Eclipse+CDT+GDB调试android NDK程序(转)
Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- Windows下Codeblocks调试Cocos2d-x项目体验(一次失败的体验)
很久之前的一篇文章有介绍过在Ubuntu下安装Cocos2d-x3.11并使用Codeblock调试Cocos2d-x程序:http://www.cnblogs.com/moonlightpoet/p ...
随机推荐
- vue中使用localstorage
1.store.js(读取写入到localstorage) const STORAGE_KEY="todos-vuejs" export default{ fetch(){ ret ...
- InstallShield: 1628 完成基于脚本的安装失败
问题: 第一次卸载程序失败,以后每次卸载出现1628 完成基于脚本的安装失败,使用安装包打开也会出现相同问题. 原因: 首先检查安装包是否出错,然后检查卸载脚本是否出错. InstallShield程 ...
- stm32之TIM+ADC+DMA采集50HZ交流信号
http://cache.baiducontent.com/c?m=9d78d513d98207f04fece47f0d01d7174a02d1743ca6c76409c3e03984145b5637 ...
- compass Errno::EACCES on line ["897"] of C: Permission denied
具体原因不清楚,应该是与新版的sass有关. 目前的处理方法就是安装原来的版本 gem uninstall compass gem uninstall sass gem install sass –v ...
- 在win10企业版x64下使用curl命令
一.curl命令介绍 curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 详情查看百度百科 ...
- 从git上check out指定的文件夹至本地
当项目过大时,从服务器上拉取项目是件很头疼的事情,那么就说说怎么只拉区某个或几个文件夹至本地. git clone -n git@172.0.0.10:test/test_platform.git c ...
- Top useful .Net extension methods
Special extension methods were released in C# 3.0. Developers have continuously been looking for way ...
- linux下用/proc/stat文件来计算cpu的利用率-c语言实现
proc文件系统介绍 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内 ...
- SpringBoot(三)整合Redis
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
- IntelliJ IDEA下spring boot项目打包
Spring Boot自带Tomcat插件,可以直接编写启动类,开启Tomcat服务 springboot适合前后端分离,打成jar进行部署更合适 application.properties配置端口 ...