【发布时间】:2020-02-04 11:34:49
【问题描述】:
我有一堆预构建的库,可以满足我所有的应用需求。但是,我不想编译任何东西,只需使用共享库中的函数。我应该只将 .so 文件添加到 /app/src/main/jniLibs 并....使用 JNI 函数吗?
【问题讨论】:
标签: android java-native-interface shared-libraries
我有一堆预构建的库,可以满足我所有的应用需求。但是,我不想编译任何东西,只需使用共享库中的函数。我应该只将 .so 文件添加到 /app/src/main/jniLibs 并....使用 JNI 函数吗?
【问题讨论】:
标签: android java-native-interface shared-libraries
您不能从 Java 调用本机方法,只能从本机库调用。
JNI 所做的是允许您通过使用 native 关键字标记 Java 方法来连接两个世界,这样调用这些方法就会跳转到本机库中的相应函数。
“JNI 函数”仅在本机端可用,它们用于检查和操作 Java 对象。例如,有一个 CallVoidMethod 用于调用返回 void 的 Java 方法。
【讨论】:
JNIEnv* 和 jclass 或 jobject 作为前两个参数),并且您必须专门命名您的函数(类似于Java_pkg_class_method)或使用RegisterNatives 将Java native 方法链接到函数指针。