android ndk中的java.lang.exceptionininitializererror

时间:2013-09-04 08:57:40

标签: android android-ndk java-native-interface

我在android ndk中尝试简单的添加程序。但我得到以下异常 -

java.lang.exceptionininitializererror

Java文件 -

public class MainActivity extends Activity {
private native void MyMethod(int a,int b);  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyMethod(4,5);
    }

    static {
        System.loadLibrary("native"); // here i'm getting exception
    }

}

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.c
include $(BUILD_STATIC_LIBRARY) 

native.c

#include <jni.h>
#include <string.h>
#include <android/log.h>

#define DEBUG_TAG "NDKSetupActivity"

void Java_com_example_additionndk_MainActivity_MyMethod(JNIEnv * env, jobject this, jint a,jint b)
{
    jint c=a+b;
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "addition: %d", c);
}

1 个答案:

答案 0 :(得分:0)

运行示例ndk(hello-jni)时遇到此错误。这是因为android sdk版本不兼容(示例的默认值为1.5)。尝试切换兼容的sdk和modifiy清单。 另一种情况是你没有将.c构建到.so。使用cygwin64中的ndk-build。