EIT:指的是引擎、接口、执行。即引擎利用接口去执行。
在java中E一般指的是父类,I接口一般指的是抽象方法和本地方法。T一般指的是子类(编译时候确定)或本地方法(运行时候确定)。其中I由基类决定。
利用JNI java和本地方法可以互相调用。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
android NDK 开发
第一步,配置NDK
在window----->preferences--------------->android-------->NDK中加载从谷歌下载的NDK
第二步、在sdk环境中建立一个android项目并右键工程,->Android Tools->Add Native Support。输入将要生成的.so文件的名字,点finish,如下图:
名字命名以lib开头llibxxxx.so。必须这样不如在加载动态库找不到!!!!!
第三步,右键工程,->Properties,点击C/C++ General展开,点击Path and Symbols,在右边Includes下,点击Add,把NDK文件夹下的jni头文件和相应的C++头文件添加进来。
第四步,在工程源文件的包中添加一个类,用于定义native函数接口,如下
public class HelloTest { public static native String getHello(String hello); }
利用ADT生成。
在菜单栏中点Run->External Tools->External Tools Configurations,右键Program->New,在右边的main子窗口配置如下图,Name可以自己随便取一个名字。
参数如下:-classpath ${project_loc}\bin\classes -d ${project_loc}\jni -jni ${java_type_name}
然后选中有native接口的类,运行刚配置的javah即可得到头文件如下所示:
生成的头文件:
最后可以在cpp文件中写代码了:
#include <jni.h> #include <stdio.h> #include "com_example_jnitest_HelloTest.h" JNIEXPORT jstring JNICALL Java_com_example_jnitest_HelloTest_getHello (JNIEnv *env, jclass _class, jstring _string){ return env->NewStringUTF("Hello from JNI!"); }