Android NDK本机方法未find错误

我试图build立使用本机代码的android应用程序,所以我想testing如果ndk运行成功。当我尝试运行我的第一个你好世界项目日志猫说,

01-21 23:30:06.780: E/AndroidRuntime(939): FATAL EXCEPTION: main 01-21 23:30:06.780: E/AndroidRuntime(939): java.lang.UnsatisfiedLinkError: Native method not found: com.example.ndktesting.MainActivity.invokeNativeFunction:()Ljava/lang/String; 

我检查了一些stackoverflow的答案,但无法find我的答案。这里是我的代码为java和c我使用android ndk r8d版本。

 //ndktest.c #include <string.h> #include <jni.h> extern "C" { JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) }; JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Hello from native code!"); } 

这是我的MainActivity Java代码

 package com.example.ndktesting; public class MainActivity extends Activity { //declare the native code function - must match ndktest.c private native String invokeNativeFunction(); public native String unimplementedinvokeNativeFunction(); // load the library - name matches jni/Android.mk static { System.loadLibrary("ndktest"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // this is where we call the native code String hello = invokeNativeFunction(); new AlertDialog.Builder(this).setMessage(hello).show(); } } 

Android制作文件代码:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Here we give our module name and source file(s) LOCAL_MODULE := ndktest LOCAL_SRC_FILES := ndktest.c include $(BUILD_SHARED_LIBRARY) 

Solutions Collecting From Web of "Android NDK本机方法未find错误"

你的包/类名称不匹配。

 JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) 

会是class上的一种方法

 com.example.ndktesting.ndktest.MainActivity 

但是你的实际代码

 package com.example.ndktesting; public class MainActivity extends Activity 

导致它寻找

 com.example.ndktesting.MainActivity.invokeNativeFunction 

没有“ndktest”

一旦你使名字匹配,它应该工作,或揭露下一个问题。