首先要确保eclipse的c++开发环境是否搭建好,以后下载ndk,而且把ndk环境搭建好,详情参见官网。 java
新建一个android工程,以后右键工程选择Android-Tools->add Native Support.输入名称后会生成jni目录,里面生成cpp文件和mk文件. android
打开cpp文件,在include"jni.h"上会有错误提示,找不到该头文件. c++
右键工程,点击properties 如图: windows
展开 C/C++ General 选择Paths and Symbols 在右侧窗口中点击add,在弹框中勾选add to all language 如图所示: eclipse
以后点击File System按钮.选择 ndk的目录->platforms->android-x(x是数字)->arch-arm->usr->include 以后点击Apply. 这个时候cpp文件中的错误便会消失. spa
NativeInterface.java 代码以下: code
public class NativeInterface { public native int getCode(); public native String getMessage(); static{ System.loadLibrary("NDKtest"); } }
loadLibrary中的文件名参见jni目录下.mk 文件的LOCAL_MODULE字段. orm
在控制台中进入工程根目录中的bin目录下的classes目录中 ,执行以下命令 : 接口
javah -d <项目目录>\jni -jni com.example.ndktest.NativeInterface . ip
命令能够参考 javah --help.
-d 是文件的输出目录 ,这里指定为根目录下的jni文件夹, -jni 是生成jni样式的头文件 后面的参数是本地方法所在的类,类的路径名要完整 ,以前已经在classes目录下了 ,因此类的路径是从com开始的. 执行完该命令,会在工程下jni目录中产生com.example.ndktest.NativeInterface.h如图所示:
打开.h文件如图所示:
在cpp中添加头文件的引用include<com.example.ndktest.NativeInterface.h>,将头文件中的俩个方法拷贝到.cpp文件中 ,去掉方法名JNIEXPORT 和 JNICALL 以后,实现其具体方法,如图:
如图:
最后运行
每一次修改java本地接口都要在控制台中执行javah命令,比较麻烦.
还有另外一种方法,就是建立ant文件,右键工程点击New->File 建立 .ant文件,我起的名字是GenCI,如图:
,在eclipse菜单中选择windows->show View 选择ant ,将刚才建立的ant文件添加到ant的视图上 :
打开.ant文件 ,按alt+/ 出现以下图:
以后将代码修改成以下:
project name是工程名 default设置为 .ant文件名 ,而后target name设为.ant 文件名.
executable是要执行的控制台命令 这里是javah. 命令执行路径是 项目中bin目录下的classes目录.
剩下的是命令参数. ,${basedir}是工程根目录.
以后双击antView上的ant文件会自动执行该脚本,生成.h文件.
最后运行项目.
Good Luck