Android JNI之JAVA调用C/C++层
1.编写本地调用类
java文件加下新建类,类名TestNdk,内容如下
package com.example.ibit.testjni;
public class TestNdk {
public native static int getStringFromNative(); //本地方法
static{
System.loadLibrary("MyJni"); //导入生成的链接库文件
}
}
2.编译TestNdk类
build->make project 编译后会生成.class文件,我的是在这个位置app\build\intermediates\classes\debug\com\example\ibit\testjni
3.生成该.class文件的.h头文件
用javah命令生成该.class文件的.h头文件,在teminal终端运行如下命令
javah -classpath D:\RaniFile\r_application\TestJni\app\build\intermediates\classes\debug -jni com.example.ibit.testjni.TestNdk
-classpath 指定类的路径时,应该以包所在路径为准,而不是具体类所在的子目录
关于javah 具体的命令参数可以看这里[https://blog.csdn.net/beroy/article/details/4155482]
运行命令后会在\app\build\intermediates\classes\debug看到生成了com_example_ibit_testjni_TestNdk.h文件(生成.h文件的位置是在你终端操作的目录,我是在\app\build\intermediates\classes\debug这个位置javah的,所以生成的.h文件也在这个位置),在src/main下建立jni文件夹,并将生成的.h文件复制到该目录下
com_example_ibit_testjni_TestNdk.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for