질문은 크게 3가지 인데,

1. jni관련한 컴파일 방법을 자세히 모르겠습니다.

어떤분은 javac, javah를 쓰는데 이건 java에서 사용하는 법 같고,
또 타겟에서 돌려면 cygwin에서 제공하는 crosstool을 써야 하는듯 해서

좀 알기쉽게 설명해주셨으면 합니다.

http://blog.naver.com/PostView.nhn?blogId=ryuvsken&logNo=90984091

위에 올라와있는 예제를 그대로 따라하여 hello-jni를 컴파일 한뒤 동작하는것을 확인한후
라이브러리만 제가 따로 만든 예제에서 재사용할수 있는지 확인하고자 가져와봤지만

에러가 발생합니다.

public String SEstringFromJNI()
 {
  return stringFromJNI(); //hello 어쩌구가 출력됩니다.
 }


masterView = (TextView)findViewById(R.id.mastertext);
SoundEngine_JNI jni = new SoundEngine_JNI(); 
masterView.setText(jni.SEstringFromJNI());

구문은 위와 같습니다.

이런경우 아래와 같은 에러가 발생하는데 라이브러리를 못찾아서 그런것 같습니다.

2. 라이브러리의 경우 어떻게 추가를 시켜주나요?

12-22 02:46:30.874: WARN/ActivityManager(54): Launch timeout has expired, giving up wake lock!
12-22 02:46:31.194: WARN/ActivityManager(54): Activity idle timeout for HistoryRecord{43b6a7a8 com.lpmtec.lpm1000/.Lpm1000}
12-22 02:46:33.724: DEBUG/dalvikvm(353): Trying to load lib /data/data/com.lpmtec.lpm1000/lib/libhello-jni.so 0x43c3abe8
12-22 02:46:33.724: DEBUG/dalvikvm(353): Added shared lib /data/data/com.lpmtec.lpm1000/lib/libhello-jni.so 0x43c3abe8
12-22 02:46:33.734: DEBUG/dalvikvm(353): No JNI_OnLoad found in /data/data/com.lpmtec.lpm1000/lib/libhello-jni.so 0x43c3abe8
12-22 02:46:37.024: WARN/ActivityManager(54): Activity idle timeout for HistoryRecord{43c014c0 com.lpmtec.lpm1000/.FaderActivity}
12-22 02:46:37.114: DEBUG/dalvikvm(353): +++ not scanning '/system/lib/libwebcore.so' for 'stringFromJNI' (wrong CL)
12-22 02:46:37.114: DEBUG/dalvikvm(353): +++ not scanning '/system/lib/libmedia_jni.so' for 'stringFromJNI' (wrong CL)
12-22 02:46:37.114: DEBUG/dalvikvm(353): +++ not scanning '/system/lib/libexif.so' for 'stringFromJNI' (wrong CL)
12-22 02:46:37.114: DEBUG/dalvikvm(353): +++ not scanning '/system/lib/libsrec_jni.so' for 'stringFromJNI' (wrong CL)
12-22 02:46:37.114: WARN/dalvikvm(353): No implementation found for native Lcom/lpmtec/service/SoundEngine_JNI;.stringFromJNI ()Ljava/lang/String;
12-22 02:46:38.608: DEBUG/AndroidRuntime(353): Shutting down VM
12-22 02:46:38.608: WARN/dalvikvm(353): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
12-22 02:46:38.608: ERROR/AndroidRuntime(353): Uncaught handler: thread main exiting due to uncaught exception
12-22 02:46:38.764: ERROR/AndroidRuntime(353): java.lang.UnsatisfiedLinkError: stringFromJNI

12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at com.lpmtec.service.SoundEngine_JNI.stringFromJNI(Native Method)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at com.lpmtec.service.SoundEngine_JNI.SEstringFromJNI(SoundEngine_JNI.java:84)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at com.lpmtec.lpm1000.FaderActivity.onCreate(FaderActivity.java:121)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.os.Looper.loop(Looper.java:123)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at android.app.ActivityThread.main(ActivityThread.java:4310)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at java.lang.reflect.Method.invokeNative(Native Method)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at java.lang.reflect.Method.invoke(Method.java:521)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-22 02:46:38.764: ERROR/AndroidRuntime(353):     at dalvik.system.NativeStart.main(Native Method)

3. 마지막 질문은 간단한 예제와 함께 설명을 해주실수 없을까요? -_-

아무튼 좀 공부를 해야하는데 삽질시간이 너무 많아서 힘이드네요.ㅠㅠ

알기쉽게 이해만 하면 괜찮을텐데 정보가 너무 없어서요.
profile