没有JNI库链接到android工具链

时间:2017-07-11 15:50:41

标签: java android java-native-interface

似乎有" jni.h" android工具链中的标题,但没有要链接的库。

有人可以指导我如何从我的应用程序中的C代码调用Java函数吗?

1 个答案:

答案 0 :(得分:1)

Android不会导出JNI库。这意味着系统中无法从用户空间C代码调用JNI_CreateJavaVM()和她的同类。您可以创建自己的JVM,但它不是相同的Java,也无法访问Android SDK类和方法。

在Android中,Zigote进程是使用特殊的JVM(Dalvik或ART)启动的,然后Java可以加载您的C代码(以.so文件的形式),反之亦然。

您的C代码可以使用标准的JNI技术(如CallVoidMethod()及其亲属)来调用Java方法。请注意,Android SDK Java方法通常需要一些“句柄”,如context,才能完成工作;通常,你必须依赖从Java到C的一些调用来为你提供这些句柄。