Android Jni 运用问题总结

花了一早上时间写了个jni Demo,途中遇到一些问题,在这里总结一下,至于如何配置NDK环境,这里就不再重复了,网上例子太多了(NDK环境配置)。


先看工程目录,这是最后生成so文件以后的目录:

Android Jni 运用问题总结_第1张图片


问题一:根据java native 接口 生成 c 头文件

我是windows系统,在cmd命令行 进入工程主目录 用 javah 命令生成 头文件

至于javah命令的详细解释,请参考:http://blog.csdn.net/niu05500230/article/details/8277190

说明一下:

1、要先将java代码编译为 class文件,然后用生成的class文件(路径在主工程bin/classes目录下,在命令行中注意斜杠)生成c头文件

2、-d jni 是将生成的头文件输出在 jni目录(自动创建)下

3、头文件的相关信息可参考:http://www.cnblogs.com/saintaxl/archive/2012/01/01/2309443.html

4、头文件生成之后就可以写C或C++程序了

5、最后在jni目录下编写mk文件,可参考:http://blog.csdn.net/niu05500230/article/details/8277204


问题二:用NDK编译c/c++程序

打开Cygwin Terminal终端,用cd命令进入主工程jni 目录

用ndk-build命令编译mk文件

注意路劲问题,也可以将ndk路径加入环境变量,否则会报错


下边是编译结果:

Android Jni 运用问题总结_第2张图片


然后在java代码里 加载生成的库文件了:

	static {
		System.loadLibrary("jniTest");
	}

之后就可以调用之前定义的native接口了

你可能感兴趣的:(Android)