似乎有" jni.h" android工具链中的标题,但没有要链接的库。
有人可以指导我如何从我的应用程序中的C代码调用Java函数吗?
答案 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的一些调用来为你提供这些句柄。