java - 使用 Eclipse 从 Android 中的 C 代码调用 Java 函数,而不调用 Java

标签 java android c eclipse java-native-interface

我想在没有共享库的情况下从 C 代码调用 Java 函数 并且之前没有调用某些 Java 函数。

我知道如何调用我的 Java 函数,但我需要获取 Env 和 JavaVM,但我真的不知道如何获取它。我无法使用 JNI_CreateJavaVMJNI_OnLoad 因为我在 android 上工作。我正在使用 android-ndk-r13b 构建 C 代码。

我正在使用 Eclipse Juno。

我该如何解决这个问题?

最佳答案

从我对NDK的使用来看,你可以从android调用JNI_OnLoad函数。从那里您可以使用静态方法或通过实例对象调用任何您想要的类。

jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
    JNIEnv* env;
    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
        return -1;
    }
    return JNI_VERSION_1_6;
}

关于java - 使用 Eclipse 从 Android 中的 C 代码调用 Java 函数,而不调用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48707531/

相关文章:

java - PowerMock 模拟外部库

java - 我如何重构这些包装器方法以摆脱重复的代码?

java - 使用 XSLT 删除具有空/无属性的空节点

android - 在build.gradle中使用 'model.android.ndk'命令

c - 具有不同定义的类型转换结构

java - 查找并删除 ArrayList 中的名称

Android Java.DateUtils 如何改变日期格式?

java - 执行savedInstanceState.containsKey()时崩溃

c++ - 改变一点整数

c - C 语言中的回溯迷宫算法一开始就是错误的