eclipse编译调试java与ndk c++的混合代码

原文地址:http://blog.sina.com.cn/s/blog_5396c96c0100uu4t.html

1 用常规方法建立或导入java工程。

 

2 在工程所在目录下建立jni目录,所有的c++代码和mk文件都放在这个目录下。

 

3 从sample目录里拷贝Android.mk和Application.mk到jni目录下并修改相应内容。

 

4 如果包含多个c++模块,那么修改Application.mk的APP_MODULES字段,例:

    APP_MODULES = freetype myapp2

  同时建立freetyp.mk, myapp2.mk,修改android.mk为:

    LOCAL_PATH := $(call my-dir)
    include $(LOCAL_PATH)/freetype.mk
    include $(LOCAL_PATH)/myapp2.mk

  也就是说:android.mk里可以包含多个模块的mk文件。

 

5 如果要使用c++库函数,在Application.mk里加上

    APP_STL := stlport_shared

  在android.mk里加上:(注意不用手工添加stlport头文件目录)

    LOCAL_STATIC_LIBRARIES += libstlport_shared.so

  另外java代码里所有打包进apk的模块都要手工load,否则要异常:(不像windows是自动load)
   System.loadLibrary("stlport_shared");
   System.loadLibrary("freetype");
   System.loadLibrary("myapp2");

 

5 把java工程改成c++混合工程:file->new->other->c/c++->convert to a c/c++ project

eclipse编译调试java与ndk <wbr>c++的混合代码


eclipse编译调试java与ndk <wbr>c++的混合代码

6 在工程上右键属性,修改如下:eclipse编译调试java与ndk <wbr>c++的混合代码
  cygwin/bin要加入系统path环境变量里。NDK_ROOT为ndk所在目录,也要加入系统环境变量。
 

7 build工程,顺利编译出所有模块。

 

8 新建一个调试配置:

eclipse编译调试java与ndk <wbr>c++的混合代码

 

eclipse编译调试java与ndk <wbr>c++的混合代码
c/c++ application为当前工程目录的obj\local\armeabi\app_process。然后点击Select other...eclipse编译调试java与ndk <wbr>c++的混合代码

继续修改属性:eclipse编译调试java与ndk <wbr>c++的混合代码
debugger: F:\android-ndk-r5b\toolchains\arm-eabi-4.4.0\prebuilt\windows\bin\arm-eabi-gdb.exe

file: F:\tj\at_utils\build\android\obj\local\armeabi\gdb.setup

eclipse编译调试java与ndk <wbr>c++的混合代码

9 进入ndk目录,把ndk-gdb文件复制成ndk-gdb2。打开ndk-gdb2,屏蔽掉最后第1和最后第5句话,屏蔽的方法是句子最前面加#:

#echo "target remote :$DEBUG_PORT" >> $GDBSETUP
if [ -n "$OPTION_EXEC" ] ; then
    cat $OPTION_EXEC >> $GDBSETUP
fi
#$GDBCLIENT -x `native_path $GDBSETUP`

 

10 在工程的obj\local\armeabi目录下建立一个叫dbg.bat的文件,文件内容为:

set ANDROID_NDK_ROOT=/cygdrive/f/android-ndk-r5b

bash %NDK_ROOT%/ndk-gdb2

(图是r5b版本的,不需要第一句,r5c版需要定义ANDROID_NDK_ROOT)

eclipse编译调试java与ndk <wbr>c++的混合代码

现在设置工作全部完成,可以开始调试了。

调试步骤为:

1 启动java程序

2 启动后双击dbg.bat,这个时候会弹出一个小dos窗口,不要关闭这个窗口,里面是gdbserver。当用户结束调试后这个窗口会自动关闭。

3 再次点击调试按钮下旁边的小三角形按钮,选择调试配置,找到刚才的c++ aplication,点击debug。(见过程8)

这个时候就可以同时调试java和c++代码了。不过调试c++代码性能非常差,速度不是一般的慢。

eclipse编译调试java与ndk <wbr>c++的混合代码

你可能感兴趣的:(eclipse,C++,jni,NDK,休闲)