用Code::Blocks+NDK开发调试

来源:互联网 发布:无缝分类信息群发软件 编辑:程序博客网 时间:2024/05/24 06:33

--用Code::Bocok + NDK 搭建AndroidNative可视化开发及调试环境
记得最后一次写AndroidNative开的系列是去年6.1号,过去整整一年多了。虽然Android已经很火了,google为什么至今天仍然没有推出完善的NDK开发调试环境呢?!相信以后会有更多的公司会用底层的C/C++的API来开发或移植他们的产品,毕竟透过一层JNI(虽然有传说中的2.2的JIT技术)多少会能效率的损失!

Code::Blocks我就不再多提了,非常优秀的开源的跨平台C/C++开发工具,有活跃的开发人员和论坛,推荐大家下载 Nightly版本:http://forums.codeblocks.org/index.php/board,20.0.html进行开发。

关于Android 需要用到的源码的下载及Code::Blocks的下载配置,大家请参考前面的Blog:

  • Android原生(Native)C开发之八:Toolchain环境搭建篇(仅参考源码下载及Cygwin相关内容)
  • Android原生(Native)C开发之十:用Code::Blocks来开发(仅参考Code::Blocks的下载配置相关内容)

下载完的源码目录应如下图所示:
Android原生开发之十一:用Code::Blocks+NDK开发调试
当然,如果有条件也可以下载全部源码供研究使用。但基本的Native开发,有这些源码及头文件差不多就够了。
NDK假定是下载最新的r4b版本:http://dl.google.com/android/ndk/android-ndk-r4b-windows.zip,并解压在目录:D:/android-ndk-r4b
Cygwin请安装全新的1.7版本,旧版我没有测试,安装请参考列出的第每一个blog,安装make及python2.5(请务必安装2.5版,2.6不行)应该就差不多了。
下面开始Code::Blocks+NDK的配置,打开CodeBlocks,选择菜单“Settings->Compilerand debugger...”,在弹出的窗口中选取“GNU ARM GCCCompiler”,当然也可以Copy一个新的,但为了方便就用这个了,再进行如下设置:

  • 将“Toolchain executables”页的“Compiler's Installationdirectory”设置为NDK下的目录:D:/android-ndk-r4b/build/prebuilt/windows/arm-eabi-4.4.0(也可用4.2.1);
  • 将“Toolchain executables”页的“Program Files”所有arm-elf-xxx.exe改为arm-eabi-xxx.exe;
  • 在“Toolchain executables”页的“AdditionalPaths”加入Cygwin的bin目录,因为toolchain是用Cygwin构建的,需要Cygwin的运行库,如“D:/Cygwin/bin”。

如下图:
Android原生开发之十一:用Code::Blocks+NDK开发调试

再选中“Searchdirectories”页的“Compiler”页,将如下目录加入列表中(假定NDK解压在D:/android-ndk-r4b目录,Android源码下载在D:/Android/source 目录):

  • D:/android-ndk-r4b/build/platforms/android-8/arch-arm/usr/include
  • D:/Android/source/frameworks/base/include
  • D:/Android/source/system/core/include
  • D:/Android/source/hardware/libhardware/include
  • D:/Android/source/external/skia/include/core

如下图:
Android原生开发之十一:用Code::Blocks+NDK开发调试


再在“Linker”页中加入Android2.1的库文件目录:D:/Android/libs_2.1,如何用busybox下载库文件请参考“Toolchain环境搭建篇”的Blog。
用NDK自带的gdb,调试可能会有些问题,可自已下载gdb的源码进行编译或下载 Nvidia的tegra的调试器:http://developer.download.nvidia.com/tegra/files/tegra-gdb-20100430.zip
解压后,将其中的文件 /prebuilt/windows/arm-eabi-gdb.exe 复制到目录D:/android-ndk-r4b/build/prebuilt/windows/arm-eabi-4.4.0/bin,覆盖原文件,这是最新的android 专用的7.15版本的gdb,解决了很多Cygwin的目录设定的相关问题,比NDK正带的6.8版本的gdb好用。
现在基本上可以开始写程序试试编译及调试了,步骤如下:

  1. 启动 android 的模拟器,保证 adb shell 能正常运行;
  2. 建一个 android arm 的项目(已上传一个demo项目:ftest.zip),选中debug并编译,并将此文件上传到模拟器;
  3. 在命令行运行:adb forward tcp:1234tcp:1234,将本机端口和android 模拟器端口进行转接;
  4. 在命令行运行:adb shell,进入模拟器命令行后运行:gdbsever10.0.2.2:1234 program_name(program_name就是你的可调试的程序名);
  5. 在Code::Blocks中设置断点,启动调试,项目的属性做如下设置(选中项目点右键,在弹出菜单中选取“Properties...”),在弹出的窗口中设置如下图:

Android原生开发之十一:用Code::Blocks+NDK开发调试