JNI编程入门基本类型数据传输
aide吧
全部回复
仅看楼主
level 12
0_666
楼主
大家知道Java的数据类型分为基本类型和引用类型,下面就看看JNI对整型、布尔型、双精度浮点型数制的操作。
2017年12月21日 06点12分
1
level 12
0_666
楼主
Java与C++有许多相似之处,所说Java是从那里衍变过来的,基本数制类型都一一对应,而JNI只是在它们的关键字前面加一个 j ,
2017年12月21日 06点12分
2
level 12
0_666
楼主
先来看一个对整型操作的例子。
打开aide新建一个本地项目,工程名包名默认即可,进入到HelloJni.java所在的目录。
2017年12月21日 07点12分
3
level 12
0_666
楼主
删掉aide自动创建的注释和本地方法,重新写一个返回值是整型的本地方法,形式参数也是两个整形变量,还创建了一个layout,三个TextView和一个Button,用作测试程序的结果。
2017年12月21日 07点12分
4
level 12
0_666
楼主
为了方便和不出错,重新写一个与主类同包同名的空类,再把主类中的所有本地方法全部复制过来,以便制作C/C++的头文件。
2017年12月21日 08点12分
6
level 12
0_666
楼主
创建三个文件夹,分别取名为 com 、mycompany 和 myndkapp,并把它们按包名的顺序嵌套起来就组成了一个包,把上一步制作空类 HelloJni.java移到最里层的目录下面,把这个东东拷进电脑备用。
2017年12月21日 08点12分
7
level 12
0_666
楼主
在配置好andrord环境的电脑中,把这个包拖进 jdk安装目录的 bin 文件夹中,进入命令行中,输入 “ javac com/mycompany/myndkapp/HelloJni.java ” 按回车键,编译生成 HelloJni.class 文件,继续输入 javah +上面的包名和文件名 (这次不能带 java后缀名)就会生成我们需要的头文件了。
2017年12月21日 08点12分
8
level 12
0_666
楼主
如果大家觉得上电脑太麻烦也可以手写这个头文件,但要保证不能写错。下面回到aide中,进入 jni 目录打开hello-jni.cpp删掉里面的所有代码,并把头文件里面的代码复制进来,这时电脑制作的头文件可以删掉了。
2017年12月21日 08点12分
9
level 12
0_666
楼主
找到与HelloJni.java文件中,与native方法同名的Jni函数,在函数体内写入实现的代码,C和C++都行,汇编也行,依自己熟悉的就好。
在上图中,由于整型不需要转换,计算两个数的和直接相加,返回结果就行了。
2017年12月21日 08点12分
10
level 12
0_666
楼主
由于包名工程名都是默认的没有去改它,所以android.mk文件也不需要再进行配置了,编译后测试一下结果。
2017年12月21日 09点12分
11
level 13
凹凸曼大小怪77
顶
貌似aide编译jni慢
2017年12月21日 09点12分
13
1