마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

so파일을 직접 빌드하지 않고 다른데서 구한거 복사하서 사용하면 안되나요?

–1 추천

지금 vlc 오픈소스를 사용하여 동영상 스트리밍을 구현하고 있는데요

스트리밍으로 재생시 jni를 이용하여야 해서 빌드를 하여야 하는데 에러가 너무 많더라구요ㅠㅠ

그래서 vlc 오픈소스를 사용한 다른분이 빌드한 so파일을 받아서 복사해서 제 프로젝트 libs 폴더 안에 넣어뒀는데요

중요한건 load는 되는것 같은데 메소드를 찾지 못합니다ㅠㅠ

계속해서 뜨는 에러입니다

No implementation found for native Lorg/videolan/libvlc/LibVLC;.nativeInit:()V
01-23 17:58:50.193: D/AndroidRuntime(15183): Shutting down VM
01-23 17:58:50.193: W/dalvikvm(15183): threadid=1: thread exiting with uncaught exception (group=0x4259f700)
01-23 17:58:50.193: E/AndroidRuntime(15183): FATAL EXCEPTION: main
01-23 17:58:50.193: E/AndroidRuntime(15183): java.lang.UnsatisfiedLinkError: Native method not found: org/videolan/libvlc/LibVLC.nativeInit:()V
 
libvlcjni.c 파일 안에는 아래와 같이 패키지명과 함수명 다 맞춰 주었구요
void Java_org_videolan_libvlc_LibVLC_nativeInit(JNIEnv *env, jobject thiz){...}
 
LibVLC 파일 안에도 loadLibrary와 native함수를 호출하는 부분도 다 작성하여 놓았습니다.
  static {
      
       try {
           System.loadLibrary("vlcjni");
       } catch (UnsatisfiedLinkError ule) {
           Log.e(TAG, "Can't load vlcjni library: " + ule);
           /// FIXME Alert user
           System.exit(1);
       } catch (SecurityException se) {
           Log.e(TAG, "Encountered a security issue when loading vlcjni library: " + se);
           /// FIXME Alert user
           System.exit(1);
       }
   }
 
private native void nativeInit() throws LibVlcException;
 
왜이러는 걸까요ㅠㅠㅠCLASSPATH도 잡아주고 프로젝트 속성에 java build path에 native location도 지정 다 해봤는데 안고쳐 집니다ㅠㅠ혹시 그냥 복붙하면 안되는건가요?
 
Android.mk 파일 내용은 아래와 같아요
 
include $(CLEAR_VARS)
LOCAL_MODULE := vlcjni
LOCAL_SRC_FILES := libvlcjni.so
include $(PREBUILT_SHARED_LIBRARY)
 
 
 
 
뮤뮤 (770 포인트) 님이 2014년 1월 24일 질문

2개의 답변

0 추천
방귀과장 (18,940 포인트) 님이 2014년 1월 24일 답변
방귀과장님이 2014년 1월 24일 수정
0 추천

JNIEXPORT void JNICALL  void Java_org_videolan_libvlc_LibVLC_nativeInit(JNIEnv *env, jobject thiz){...}

선언할 때 이 부분이 있어야 하지 않을까요?

초보개발자ㅠ (33,870 포인트) 님이 2014년 1월 28일 답변
...