Android中的JNI_CreateJavaVM()

时间:2012-07-22 18:23:11

标签: android-ndk

有两种方法可以让Android本机C / C ++调用Java代码。

  1. Java应用程序首先调用本机函数。本机函数保存JavaVM和JNIEnv,然后使用它们来调用Java代码,比如Java类X.

  2. 本机函数调用相同的Java类X.在这种情况下,我们需要一个JVM来运行Java代码。可以使用JNI_CreateJavaVM()来执行此操作。

  3. 我发现通过上述两种方式创建的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的方式,我怎么能解决问题?

1 个答案:

答案 0 :(得分:1)

也许com.android.internal.util.WithFramework中的代码可以帮到你。 请参阅我的类似问题here