0

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) 

ネイティブ.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);
}
4

1 に答える 1

0

サンプル ndk (hello-jni) を実行しているときに、このエラーが 1 回発生しました。Android SDK のバージョンに互換性がないためです (例のデフォルトは 1.5)。互換性のある sdk と modifiy manifest を切り替えてみてください。もう 1 つのケースは、.c を .so にビルドしていない場合です。cygwin64 の ndk-build を使用します。

于 2013-10-16T05:53:44.763 に答える