안녕하세요..
현재 이클립스에서 "java.lang.UnsatisfiedLinkError: Native method not found: " 에러가 발생합니다.
검색해보니깐 => JNI와 자바 패키지명을 제대로 주었는지 확인(함수명이 패키지명으로 포함 되어 있어어야함)
관련 답변들이 있던데요.. 제가 이해가 안가서 질문 드립니다.
기존 : 메인 하나의 액티비티에서만 JNI 함수 정의 하고 사용 => 오류 없음
수정 : 메인 액티비티에서 인텐트로 사용하는 신규 액티비티에서 JNI 함수 정의 하고 사용 => 위와 같은 오류 발생
오류가 나는 소스 캡처 이미지를 못올려서 아래처럼 소스를 적었습니다.
검색한 것 처럼 팩키지명 문제 같은데, 어떻게 고쳐야 할지 모르겠습니다.
인텐트 액티비티에서 JNI 쓰는게 쉽지 않네요.
폴더 트리
src\com\andev\demo\ 파일 3개 ( REGJNI.java, Demo.java, intentActivity
jni\ 2개 ( Android.mk , REGJNI.c )
프로젝트의 jni 폴더 REGJNI.c
#include <jni.h>
#include <stdio.h>
JNIEXPORT jint JNICALL Java_com_andev_demo_REGJNI_read_test( JNIEnv *env, jobject thiz ) {
system("cat read_test");
return 0;
}
|
프로젝트의 src폴더에 com.andev.demo에 Demo.java --메인엑티비티
package com.andev.demo;
public class Demo extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
....
|
프로젝트의 src폴더에 com.andev.demo에 IntentActivity.java --인텐트엑티비티
package com.andev.demo;
public class IntentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
여기서 JNI 함수 호출 및 사용
....
|
프로젝트의 src폴더에 com.andev.demo에 REGJNI.java
package com.andev.demo;
public class REGJNI {
public native int read_test();
static{
System.loadLibrary("regjni");
}
}
|