지금 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)