NDK开发笔记(一)---环境搭建

来源:互联网 发布:怎样创建数据库 编辑:程序博客网 时间:2024/06/05 03:38

安装NDK开发环境:

1.安装cygwin ,其中要安装gcc等编译器等请参考http://qichunren.javaeye.com/blog/214527

 

  结果:

运行 cygwin ,在弹出的命令行窗口输入: cygcheck -c cygwin 命令,会打印出当前 cygwin 的版本和运行状       态,如果 status 是 ok 的话,则 cygwin 运行正常。

      然后依次输入 gcc –version , g++ --version , make –version , gdb –version 进行测试,如果都打印         出版本信息和一些描述信息,非常高兴的告诉你,你的 cygwin 安装完成了!

 

C:/cygwin/home/用户名/.bash_profile

在后面加入下面的path.

 

NDK=/cygdrive/NDK路径

PATH=${PATH}:/cygdrive/NDK路径

export NDK

 

export NDK.

配置PATH环境变量。

 

 

2.下载NDK  Android NDK (Native Development Kit)

 

配置 NDK 环境变量

 

 

 

 

 

3.下载最新的Eclipse 版本

            http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-win32.zip

 

4.配置android相关ADT,以及SDK环境

 

 

4.安装CDT,可以支持C/C++ Project.

http://www.eclipse.org/cdt/downloads.php

 

 

5.配置eclipse

 

 

 

   生成项目也是快速而灵活的。你曾经使用过Eclipse的生成器吗?它们是一些可配置的开关,用于执行你所配置的命令和刷新工程资源。以下是我的配置:

       右击你的项目,选择“properties

       在左边的列表中选择“Builders

       在右侧,点击“New…”按钮

       在列表框,选择“Program”作为配置类型;点击“OK”按钮,进入下一个配置对话框。

       命名name为“Native Builder

       选择Location为“c:/cygwin/bin/bash.exe

       Working Directory”为“c:/cygwin/bin

       Arguments”为:

  –login -c “cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK/ndk-build”

 

其中/cygdrive/e/android-ndk-r5/samples/hello-jni为你工程的目录。

 

确保在login前有两个连接号,-c后面的引号。

       接着打开“refresh”的tab面板:

       选中“Refresh resources upon completion

       选择“Specific resources

       点击“Specify resources”按钮,选择你项目的libs目录

       选中“Recursively include sub-folders

       接着打开“Build Options”的tab面板:

       选中“Allocate Console

       选中“Launch in background

       选中“Run the builder After a Clean

       选中“Run the builder During manual builds

       选中“Run the builder During auto builds

       选中“Specify working set of relevant resources

       点击“Specify Resources”按钮,选择你项目的JNI目录,并包含所有的文件。

       点击“OK”按钮。

上面红色字体的一定要选择正确。这样就会ba

 

 6.测试 
打开项目jni目录里的hello-jni.c文件把提示Hello from JNI!改成其他的文字:如:Hello World JNI.,然后再模          拟器中运行你的程序,如果模拟器中显示了你最新修改的文字,

在Console中会显示如下。。

 

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup       : libs/armeabi/gdb.setup

Compile thumb  : hello-jni <= hello-jni.c

SharedLibrary  : libhello-jni.so

Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

 

 

那么Congratulations!你已经全部配置成功啦。

 

 

7.要编写jni中的.c文件那加下面的include文件

 

右键你的工程然后选择Properties-->C/C++ Builder/Settings/GCC Compiler/include/加入你要引入的JNI头文件

一般在

android-ndk-r5/platforms/android-3/arch-arm/usr/include。里面包含了jni.h文件。

这样就可以在eclipse中用Alt+/来感应编程了。

 

8.android ndk logcat

如果想在JNI中使用logcat输出的话那就做以下几步

  •    #include <android/log.h>
  • LOCAL_LDLIBS := -llog 在Android.mk文件中加入库不然会报下面的错误 
    undefined reference to `__android_log_write'
    加入log 使用下面的指令。
    __android_log_write(ANDROID_LOG_ERROR,"Tag","Message");
    可以查看log.h文件的定义。路径如下
    build/platforms/android-1.5/common/include/android/log.h

9.我自己新建个工程,然后加入jni,libs文件,然后按照上面的做,发现它不能做到上面的第七步,工程右键选择Properties没看到Properties-->C/C++ Builder/的选项,这样我引用不了c/c++的头文件等,编程速度严重影响。

 

于是我就比对我的Test工程和hello-jni工程的区别,发现了在hello-jin/.PROJECT文档不同

 

于是在我的工程中比对这两个PROJECT文件,加入下面的code就可以实现

 

在buildSpec中加入了CDT的控件。

需要注意的是修改

${workspace_loc:/Test/Debug}-->Test为你的工程名字。

在natures的标签中不同德是加入了CDT 插件。

 

 

最后还要加人C/C++工程的.cproject 文件,让该工程也是C/C++工程,这个文件你直接从一个在eclipse的c/c++工程copy到你工程的根目录就ok,你可也观察hello-jni工程。


 

修改完成之后保存ok.就可以实现和NDK smaple一样的效果了,编程方便多了。。^_^

 

 

 

10.搭建好了之后最好是做2个工程,一个是C/C++工程,另外一个android工程,在c/c++ build,build 完之后直接复制libs/ 的目录到android工程。


11.如果上面步骤都做了还有问题可以联系我

 

Email:wongstar.iac@gmail.com

参考文献:

http://qichunren.javaeye.com/blog/214527

http://blog.csdn.net/duduliao/archive/2011/02/11/6179511.aspx

http://blog.csdn.net/lizhongkan/archive/2010/01/30/5271606.aspx

http://www.rbgrn.net/content/348-get-your-eclipse-integrated-ndk-on

http://blog.blackwhale.at/2009/08/android-ndk-logging/

http://hi.baidu.com/justin8335/blog/item/8976de1d009e35f91ad5762e.html

原创粉丝点击