안녕하세요 안드로이드 초보 입니다.


  jni 관련 질문이 있어서 도움을 청하려고 합니다.


  c레벨에서 이미지를 데이타를 리소스로 부터 받기 위해 java에 있는 메소드를 호출할때 에러가 나고 있습니다.


  LoadImage()

  {

// 타겟 클래스 가지고 온다.

targetClass = env->GetObjectClass(jni_obj);


mID = env->GetMethodID(targetClass, "LoadData","(Ljava/lang/String;)I");


sucess = (jint)(env->CallObjectMethod(jni_obj, mID, jstr));


  }

  여기서 env->GetMethodID(targetClass, "LoadData","(Ljava/lang/String;)I");를  호출하면 


  JNI WARNING: expected return type 'L' 

calling L com/test/NativeCall: LoadData(L java/lang/String;)I

in L con/test/NativeCall;.touchEnd:(IFF)V (CallObjectMethodV)

  라고 뜨며 어플이 종료 되는 현상이 발생하고 있습니다.

  ------------------------------------------------------------------------------

  touchEnd 메소드는 java 단에서 


  public native void touchBegin(int touchNum, float posX, float posY);


  onTouchEvent()

 {

case MotionEvent.ACTION_UP:

touchMoved();

break;

 }


 이런씩으로 선언이 되어 있고 


 C 레벨에서 


  JNIEXPORT void JNICALL Java_com_test_NativeCall_touchMoved(JNIEnv* env, jobject obj, jint touchNum, 

 jfloat tPosX, jfloat tPosY)

  {

OnTouchMove();

  }


  OnTouchMove(); 함수를 통해서 LoadImage() 가 호출되고 있습니다.


  간단하게 정리하면 GetMethodID()를 통해서 클래스의 ID를 가져오려고 하면 


  JNI WARNING: expected return type 'L' 

calling L com/test/NativeCall: LoadData(L java/lang/String;)I

in L con/test/NativeCall;.touchEnd:(IFF)V (CallObjectMethodV)

  라는 경고가 loacat에 찍히고 어플이 종료 되어 버립니다.


 전 com/test/NativeCall: LoadData(L java/lang/String;)I 을 호출했는데

 

이전 java 레벨에서 호출된 


 in L con/test/NativeCall;.touchEnd:(IFF)V (CallObjectMethodV) 이런 메시지가 찍히면서 


 죽는지 알수가 없네요..

  

이런 현상이 특정 영역에서 지속적으로 발생하고 있네요 

 혹시 원인이 어떤건지 알 수 있을까요??