質問内容
質問を評価する
(0ポイント)
|
☆やりたいこと JNI実行時のログをUIに表示するため、JNIのクラスメソッドを呼び出したい。
☆環境 Windows7 Ulti x64 eclipse 4.2.2 Android 4.0.4(arm) Emulator ターゲット Android 2.3.3(API10) Java 1.6.0.26 ※NVIDIAのtegra-devpack-2.0にPleiades プラグインで日本語化してあります。
☆問題 staticメソッドは実行出来るのに、クラスメソッドが実行出来ない
☆java ... public void AddLog(String text) { //txtLog.setText(text); Log.d(TAG, text); } public static void stAddLog(String text) { //txtLog.setText(text); Log.d(TAG, text); } ...
☆c jboolean Java_com_example_jni_test_MainActivity_MethodCall( JNIEnv* env, jobject thiz, jstring value) { jclass cls; jmethodID mid;
cls = (*env)->GetObjectClass(env, thiz); if( cls == 0 ) return JNI_FALSE;
#if 1 // Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1) mid = (*env)->GetMethodID(env, cls, "AddLog", "(Ljava/lang/String;)V"); if( mid == 0 ) return JNI_FALSE; (*env)->CallVoidMethod(env, cls, mid, value); #else // ok mid = (*env)->GetStaticMethodID(env, cls, "stAddLog", "(Ljava/lang/String;)V"); if( mid == 0 ) return JNI_FALSE; (*env)->CallStaticVoidMethod(env, cls, mid, value); #endif
return JNI_TRUE; }
|