谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自动编译NDK了。
步骤:1、下载ndk,地址:https://developer.android.com/ndk/index.html
2、用eclipse新建工程,在工程目录下新建jni目录,用于存放ndk编译需要的文件。
3、新建并配置一个builder
(1)Project->Properties->Builders->New,新建一个Builder。
(2)在弹出的【Choose configuration type】对话框,选择【Program】,点击【OK】:
(3)在弹出的【Edit Configuration】对话框中,配置选项卡【Main】。
在name中输入一个名字。
在“Location”中输入nkd-build.cmd的路径(这个是下载完ndk后解压后的路径,这个建议放在根目录下面,路径不能有空格和中文)。根据各自的ndk路径设置,也可以点击“Browser File System…”来选取这个路径。 在“Working Diretcoty”中输入ndk项目位置(可以点击“Browse Workspace”来选取目录)。
(4)继续在这个【Edit Configuration】对话框中,配置选项卡【Refresh】。如图2 勾选“Refresh resources upon completion”, 勾选“The entire workspace”, 勾选“Recuresively include sub-folders”。
(e)继续在【Edit Configuration】对话框中,配置选项卡【Build options】。 勾选“After a “Clean””,(勾选这个操作后,如果你想编译ndk的时候,只需要clean一下项目 就开始交叉编译) 勾选“During manual builds”, 勾选“During auto builds”, 勾选“Specify working set of relevant resources”。
点击“Specify Resources…”勾选工程中新建的“jni“目录,点击”finish“。 点击“OK“,完成配置。
ndk 代码编写
1.在TestNdk工程中新建一个JniClient.class(为了调用C/C++代码),其内容如下:public class JniClient {
static public native String AddStr(String strA, String strB);
static public native int AddInt(int a, int b);
}
2.生成 .h 的c++头文件
(1)用cmd命令定位到JniClient.class 所在目录,输入“javac JniClient.java“后回车,生成JniClinet.class文件(如果是用的Eclipse建的工程,在TestNdk\bin\classes\com\ndk\test目录下就已经有JniClinet.class文件了)。
(2)将JniClinet.class拷贝到TestNdk\bin\classes\com\ndk\test目录,将cmd命令定位到TestNdk\bin\classes目录,输入”javah com.ndk.test.JniClient“后回车,在TestNdk\bin\classes目录下就生成了C++头文件com_ndk_test_JniClient.h
3.在jni目录下新建一个Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestNdk
LOCAL_SRC_FILES := com_ndk_test_JniClient.c
include $(BUILD_SHARED_LIBRARY)
- 将刚刚手动生成的com_ndk_test_JniClient.h拷贝到TestNdk工程的jni目录下,
然后新建一个com_ndk_test_JniClient.c文件完成头文件中函数的实现,其内容如下`#include “com_ndk_test_JniClient.h”
#include