文档详情

Eclipse+CDT+GDB调试android-NDK程序(补足六个汉字).docx

发布:2018-12-26约3.5千字共21页下载文档
文本预览下载声明
Eclipse+CDT+GDB调试android NDK程序 Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的。 ubuntu 11.10 eclipse 3.7(indego) for java jdk 6 android sdk 2.2 andrid ndk r7 ? 当然,在windows环境下通过cygwin等工具也是可以实现gdb调试的,我也确实实现过。但是性能实在太低,卡的根本没法用。Linux下直接用gdb调试本地方法是很流畅的。 再确定安装并配置好开发环境之后,就可以开始了。 首先得确定自己能够正常的运行一个ndk工程,连运行都成问题的话,也就谈不上什么调试了。 ? 新建一个android项目,选择crete project form existing source,源代码位于 /home/shaodx/android/android-ndk-r7/samples/hello-jni,即ndk目录的samples/hello-jni。 ? Next Sdk target 就选2.2吧 ,其他的虽然没测试,应该也没什么问题。 ? Finsh ? Hellojni项目极其简单,看代码就懂了。在activitie下建立一个textview,然后调用一个natvie方法来返回一个字符串,然后把textview的text设置为这个字符串。 为了方便看到调试后的效果和局部变量的变化情况,我加了几行对程序结果没影响的代码。 Java代码: C++: 当然,这个时候直接运行的话,程序肯定会崩溃的。因为动态链接库还没编译好。Ndk根目录下的ndk-build负责编译so文件。首先进入项目所在目录,然后运行ndk-build即可。 效果如下: 出错了….. Host awk tool is outdated. 上网搜索之后的解决方案如下: 到/home/shaodx/android/android-ndk-r7/prebuilt/linux-x86/bin/目录下找到这个awk,file一下: 这个awk文件居然是64位版的,难怪之前说过期了。(google程序员粗心了吧) 解决方案居然是把这个awk删了就行了…………….. 解决问题之后,换个姿势,再来一次 ? So文件存在于libs/armeabi/libhello-jni.so。 现在就可以运行程序了。 不过要是每一次修改c++代码都还要调用ndk-build的话,那也太麻烦了。介绍一个一劳永逸的方法。 首先,要给eclipse安装一个CDT,eclipsehelpinstall new software 下载地址为??? HYPERLINK /tools/cdt/releases/indigo/ /tools/cdt/releases/indigo/ 反正我是把所有的选项都给安装了,也花不了太多的时间。 然后是安装sequoyah? 地址为? HYPERLINK /sequoyah/updates/2.0/ /sequoyah/updates/2.0/ 这个就只需要安装Sequoyah Android Native Code Support 一项就可以了。 然后把当前项目转换为C++项目。 Filenewother: ? Convert to a c/c++ Project 依照图中所示设置: Finish。 这个时候,项目中的c++代码也会被识别了。一般这个时候就会爆出一堆错误,主要是gcc找不到jni.h头文件,同样也识别不了来自jni的一些函数和数据类型: ? 于是就要给gcc添加一个环境变量让它来找到jni.h了,环境变量名称为C_INCLUDE_PATH。这个名字不能乱写,windows下类似的环境变量叫做INCLUDE。 然后多刷新几次工程,这些错误就消失了。 接下来,进行C++代码的编译配置。 进入工程属性页,build command设置为ndk下ndk-build的完整路径。 ? 将Behavior选项页下的build处的all替换为空格 ? 接下来就可以直接运行了,每次运行的时候,就会自动把C++代码编译成so文件。同时,可以在eclipse中编写java代码和C++代码,很是方便。 ? ? ? 往下的工作就真的跟调试相关了。 首先进入工程目录,然后运行ndk目录下的ndk-gdb。执行这一步骤时,应当先确保有模拟器在运行。如果有人更习惯于命令式的方法来调试程序的话,就可以直接用这个ndk-gdb来调试程序了。接下来的步骤就是把这个gdb调试图形化。 ? 在eclipse下进入debugdebug configuration,选择C/C++ Application,main选项卡下的C
显示全部
相似文档