使用Android Studio在Android NDK中编写本机方法签名的正确方法是什么?

时间:2016-05-03 07:26:49

标签: android-ndk java-native-interface

我有一个NDK库和相应的Java类的工作实现。但我用ndk方法得到错误... 我使用Android studio 1.5 gradle 2.8实验:0.4.0

我的代码是......

#include <jni.h>
#include <string.h>

jstring Java_com_example_shivlabs_ndktest_MainActivity_HelloWorld(JNIEnv* env,jobject obj)
{
    return (*env)->NewStringUTF(env,"HelloWorld");
}

以上是My ndktest.c文件。

当我声明本机方法时,我得到错误。错误是报告Java中的本机方法声明,其中没有在项目中找到相应的JNI函数。

public class MainActivity extends AppCompatActivity
{
    public native String HelloWorld();

    static
    {
        System.loadLibrary("ndktest");
    }
}

怎么解决呢????

1 个答案:

答案 0 :(得分:0)

不确定您的目录结构是什么样的,但您的方法签名看起来是正确的。

但我认为您忘记了方法上面的以下声明。

JNIEXPORT jstring JNICALL

所以你的方法应该是这样的:

JNIEXPORT jstring JNICALL
jstring Java_com_example_shivlabs_ndktest_MainActivity_HelloWorld(JNIEnv* env,jobject obj)
{
    return (*env)->NewStringUTF(env,"HelloWorld");
}