AndroidStudio开发JNI静态注册调用获取返回数据
一、编写java代码
1.java代码必须由native关键词修饰,不允许有{}实现,因为实现是在c里面所以不允许有方法体 public native String getString();
二、使用javah生成c的头部文件
1.生成头文件,来到java的源码目录,ADT下来到src目录,AndroidStudio来到蓝色文件夹目录即java执行以下命令:
//javah 包名+类名,会自动生成.h文件包含类里面的所有被native修饰的方法
javah com.example.mypc.myxphook.MainActivity
2.如果报以下错误(错误: 编码GBK的不可映射字符)可尝试加入参数://javah -encoding UTF-8 包名加类名
javah -encoding UTF-8 com.example.mypc.myxphook.MainActivity
3.执行成功会在java目录(如果ADT则在src目录下)下出现.h文件
4.重命名.h文件并移动到src同级的jni目录(我这里重命名testJni.h)并创建.c文件
三、编写c代码
1.默认创建完的文件是空的,需要引入javah生成的.h文件改名后再头部使用includ引入,然后把头文件内的方法复制过来,尾部的分号删除,加上花括号{}然后在花括号内写实现代码,这里简单实现返回一个字符串
四、生成so文件,在Android层面调用
1.在我们的.c的目录使用ndk-build文件夹内需要配置Android.mk和Application.mk两个文件,上一篇文章详细讲了这两个文件的用法不清楚请点击此传送门
五、编写代码调用该方法得到返回值
1.Java层编写代码,并调用
六、运行结果
在浏览的同时希望给予作者打赏,来支持作者的服务器维护费用.一分也是爱~