有两种方法可以让Android本机C / C ++调用Java代码。
Java应用程序首先调用本机函数。本机函数保存JavaVM和JNIEnv,然后使用它们来调用Java代码,比如Java类X.
本机函数调用相同的Java类X.在这种情况下,我们需要一个JVM来运行Java代码。可以使用JNI_CreateJavaVM()来执行此操作。
我发现通过上述两种方式创建的JVM是不同的。
这是Java类X。
public class X
{
public X()
{
Log.d("X", "X()");
}
}
Log.d()可以通过以下方式成功运行1.但是,在方式2中我从logcat获得以下错误消息: “找不到本机Landroid / util / Log; .println_native(IILjava / lang / String; java / lang / String;)I”
的实现我在想JNInv从JNI_CreateJavaVM()得到了什么。如果我必须使用2的方式,我怎么能解决问题?