一、编写java文件,如HelloWorld.java
package com.sample.jni;
public class HelloWorld {
public native void sayHello();
}
二、 生成头文件,进入bin目录(就是存放java class的根目录),然后执行javah命令,生成头文件:
如至项目my_jni项目上执行以上几个步骤即可生成.h文件
.h内容类似下面的
/* DO NOT EDIT THIS FILE – it is machine generated */
#include <jni.h>
/* Header for class com_sample_jni_HelloWorld */
#ifndef _Included_com_sample_jni_HelloWorld
#define _Included_com_sample_jni_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_sample_jni_HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_sample_jni_HelloWorld_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
三、在.cpp文件中编写
JNIEXPORT void JNICALL Java_com_sample_jni_HelloWorld_sayHello
(JNIEnv *, jobject);方法中的实现
(JNIEnv *, jobject);方法中的实现
编写C++代码需要一点准备工作,让java项目支持C++,这需要你的Eclipse安装CDT。
为项目增加C++支持后,打开头文件(com_examples_jni_HelloWorld.h)会有警告,因为项目没有设置C++常用头文件的路径。我们要通过设置,把C++基本头文件和java的jni需要的头文件加上。在项目属性中设置:
内容为:
/usr/include/c++/4.2.1
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers
3.5步骤:
需要设置构建工具的路径,和之前jni项目不同,后者直接使用gcc来做。
内容为:/Users/lanhongmei/application_files/installing_files/android-ndk-r8d/build
这里,第一个是GCC的C++需要的头文件目录,第二个是jni需要的。
可以编写C++实现代码了:
因为是动态库,因此这个代码是不能执行的,需要调用执行。编译直接用command+b即可。