一直听说JNI开发,但是没有实践过,初次试验,记录一下。
jni的实现简而言之就是:
java有一个native接口,c/c++语言实现接口,生成库,java再调用。
废话不多,直接步骤:
1:下载android-ndk,安装,生成文件
2:Eclipse设置ndk,在window-perference下:设置后最好重启一下吧
3:创建或者选中项目,右键,选择:Android Tools ---add Native support
点击后,在弹出界面输入名称,完成,会生成jni文件夹,里面会有Android.mk文件和cpp文件,以前没接触过c++,后来才明白所谓cpp:c plus plus.就是c++
这个jni目录是最终的目录,初始生成只有Android.mk和cpp文件
注意Android.mk中的LOCAL_SRC_FILES的值,是将要实现接口的c或者cpp文件。
4:生成.h文件
进入工程目录,比如你的工程是xxx.那么进入workspace/xxx目录
javah -classpath src/classes -d jni 包名.类名
src/classes 是class文件所在目录
-d xxx 是生成.h文件在xxx文件中
这个类名是写了native的java类,最好没有继承android的包
最后刷新一下jni文件夹
5:将.h中的内容复制到cpp或者c文件中,实现接口。
怎么实现,懂c++和c的会很明白,我还不是很明白,只会依样画葫芦:
cpp中:
c中:发现只有上面红框部分
6,适配CPU:
为了适配不同的cpu类型,需要在jni文件中添加你所看到的Application,mk文件,里面只有一句代码:
7,编译cpp或者c文件,会生成不同平台的.so文件在obj目录下
8,运行
这只是在输出了一句话,复杂的还是不会,但是一切都是从hello world开始的。
学习的时候参考了:http://cherishlc.iteye.com/blog/1756762