- 在 src/com/cmder 目录下,创建 Java 类
1
2
3
4
5
6
7public class MyJNI {
static {
System.loadLibrary("MyLibrary");
}
public native void myFunction();
} - 在 src 目录下,生成 JNI 头文件,
1
2
3javac -h . com/cmder/MyJNI.java // 这个方法在对MainActivity直接使用时出现问题
// 改用
javah com.example.jni.MainActivity - 在 src 目录下,编写 C 代码
1
2
3
4
5
6
7#include <stdio.h>
#include <jni.h>
#include "MyJNI.h"
JNIEXPORT void JNICALL Java_com_cmder_MyJNI_myFunction(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
} - 在 src 目录下,编译 C 代码创建动态链接库其中,-I 参数用于指定 Java 头文件的位置。
1
gcc -shared -fpic -o libMyLibrary.so MyJNI.c -I/usr/lib/jvm/java-1.11.0-openjdk-amd64/include -I/usr/lib/jvm/java-1.11.0-openjdk-amd64/include/linux
- 在 src 目录下,设置共享库
1
export LD_LIBRARY_PATH=.
- 在 src 目录下,运行 Java 代码
1
java com.cmder.MyJNI
在 Java 中使用 JNI
- 本文链接: https://cmder.github.io/平台/Android/JNI/在-Java-中使用-JNI.html
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!