1、(方法一)根据编译的.class生成Jni.h头文件和jni函数
1.1在java的类文件中预置想要的native接口

1.2 点击make project(Ctrl+F9)后确认class文件已生成
我AS下class的生成路径在:
工程目录下\app\build\intermediates\javac\debug\classes\com\example\myapplication

1.3 由javah -jni命令对class文件生成头文件
备注:我这台电脑的javah命令在路径 “D:\Program Files\Android studio\jre\bin” 中,(因为额外装别的java环境变量,这里就直接拿这个原始路径用, 本来可以直接用环境变量);
使用以下命令生成h头文件:
D:\2_F\2_Android_Program\1_NDK_Cmake2so_Test3_JNI\app\build\intermediates\javac\debug\classes>“D:\Program Files\Android studio\jre\bin\javah.exe” -jni com.example.myapplication.Load
(如果javah已经在系统环境下,可以在Terminal中直接敲:
javah.exe -jni com.example.myapplication.Load)

可以看到,在同目录下已生成对应的.h文件

1.4 此方法的优缺点
缺点:1、生成的头文件中参数的实体名字没有;
优点:1、注释中含有签名的方法: (II)I

2、(方法二)利用AS自动生成JNI函数名
2.1在java文件中写入新的native方法并同步到test-jni.c
该方法的前提是已经建立好Cmake环境,怎么建的可以参考我的另外一片文章AS上Cmake的搭建与使用—以生成动态/静态库
选中新加的方法decInt, alt+enter, 系统会提示Create JNI function, 并同步创建对应的JNI放至test-jni.c中; (如果不成功,建议将AS升级至较新版本)

可以看到,该函数名已生成:

3 更多技术文章可关注本人公众号

本文介绍两种生成JNI函数的方法:一是通过javah命令从.class文件生成Jni.h头文件;二是利用Android Studio自动生成JNI函数并同步到C源文件。文中详细说明了每一步操作流程及注意事项。
1018

被折叠的 条评论
为什么被折叠?



