我試圖使用本機代碼來構建Android應用程序,所以我想測試是否NDK運行successfully.When我嘗試運行我的第一個Hello World項目 日誌貓說,的Android 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的答案,但無法找到我的答案。這裏是我的代碼爲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的make文件代碼:
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)
請注意,這個問題涉及一個特定的原因(不匹配的軟件包名稱),這是一個更常見的錯誤消息,可能有無數的原因。沒有與名稱不匹配的讀者不會在這裏找到解決方案 - 他們有一個根本不同的未知問題。 –