0%

在 Java 中使用 JNI

  1. 在 src/com/cmder 目录下,创建 Java 类
    1
    2
    3
    4
    5
    6
    7
    public class MyJNI {
    static {
    System.loadLibrary("MyLibrary");
    }

    public native void myFunction();
    }
  2. 在 src 目录下,生成 JNI 头文件,
    1
    2
    3
    javac -h . com/cmder/MyJNI.java // 这个方法在对MainActivity直接使用时出现问题
    // 改用
    javah com.example.jni.MainActivity
  3. 在 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");
    }
  4. 在 src 目录下,编译 C 代码创建动态链接库
    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
    其中,-I 参数用于指定 Java 头文件的位置。
  5. 在 src 目录下,设置共享库
    1
    export LD_LIBRARY_PATH=.
  6. 在 src 目录下,运行 Java 代码
    1
    java com.cmder.MyJNI