Android NDK:没有发现目标全部和本机方法的规则



我正在使用Android NDK在我的应用程序中使用一个C 库。运行应用程序时,我总是会收到一条错误消息,该消息是java.lang.UnsatisfiedLinkError: Native method not found.,我多次检查了我的代码,但找不到任何东西。此外,我收到了另一个错误消息,即No rule to make target all.

LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport
LOCAL_PATH := $(call my-dir)
LOCAL_ALLOW_UNDEFINED_SYMBOLS = true
include $(CLEAR_VARS)
LOCAL_MODULE := my-module-jni
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*/*.cpp)
include $(BUILD_SHARED_LIBRARY)
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_test_ndk_MyClassName_test
(JNIEnv *env, jobject obj)
{
    return env->NewStringUTF("Hello from C++ over JNI!");
}
    }
    public class MyClassName extends Activity{
    public static native String test();
    ......
    }

在我的JNI文件夹中,我有许多C 类和文件夹。我认为问题是我的android.mk文件。我应该在android.mk文件中更改什么?

鉴于您在评论中提到您的代码在较小的测试应用程序中起作用,但不能确保较大的应用程序实际上是在Java活动中加载库中的库:

// Load the .so
static {
    System.loadLibrary("libmy-jni-module");
}

看起来该方法的名称不正确。您可以向我们展示您从Java调用的方法的名称以及C/C 中的方法的名称?

编辑:这可能包含更多信息:http://www.netmite.com/android/mydroid/2.0/development/ndk/docs/android-mk.txt规范状态local_path应该在第一行中。还要寻找隐藏的白色空间。

最新更新