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

남은그루터기님이 올리신 ffmpeg 강좌를 보고 따라했는데

0 추천

java.lang.UnsatisfiedLinkError: Couldn't load basicplayer from loader dalvik.system.PathClassLoader[dexPath=/data/app/net.jbong.FFmpegBasic-2.apk,libraryPath=/data/app-lib/net.jbong.FFmpegBasic-2]: findLibrary returned null

 

빌드까지 성공하고 이클립스 자바코드도 에러가 안나는데 실행하면 튕기면서 위같은 로그가 뜨네요 ..

라이브러리를 찾을수 없다는 것 같은데 .. 무엇이 잘못됐는지 짐작가는 부분이 있으시면 좀 알려주세요 ..

익명사용자 님이 2014년 8월 25일 질문

1개의 답변

0 추천
 
채택된 답변
강좌가 예전 것이라 최신 NDK로하면 컴파일 오류가 나는 듯 합니다.

전에 다른분께 답변 드린게 있으니 확인 해 보시고 해결이 안되면,

빌드 오류난 부분을 올려 주시면 확인 해 보도록 하겠습니다.

http://www.masterqna.com/android/31405/ffmpeg-%EC%8B%9C%EB%8F%84%EC%A4%91%EC%9E%85%EB%8B%88%EB%8B%A4-config-sh-%EC%8B%A4%ED%96%89%EC%8B%9C-%EC%97%90%EB%9F%AC?show=31410#a31410
사악미소 (65,330 포인트) 님이 2014년 8월 25일 답변
와 이렇게 빨리 답변을 감사합니다 !
해보겠습니다
이클립스에서 ndk-build 경로설정 안해서 그런가 하고 설정해주고 빌드를 다시해봤는데 빌드가 주르륵 되면서 되나싶더니 오류 뜨면서 멈추네요 .. 오류 내용입니다..

make.exe: *** No rule to make target `/cygdrive/c/android-ndk-r10/sources/android/cpufeatures/cpu-features.c', needed by `obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o'.  Stop.
/cygdrive/c/android-ndk-r10/sources/android/cpufeatures/cpu-features.c  에 파일이 있나요? 없으면 경로가 안 맞은 것으로 보입니다.
저도 그파일이 없는줄 알고 /cygdrive/c/android-ndk-r10/sources/android/cpufeatures/cpu-features.c 보고 파일 확인했습니다
이게 다시 빌드하니까 이렇게 되네요 cyg 에서 빌드할때는 libbasicplayer.so 까지 됐는데 이클립스에서 Properties -> Builders 에서 ndk-build 경로 추가해서 빌드했는데 이렇게 나오네요 .. 다시 경로를 바꾸려면 어디서 수정하는지를 모르겠습니다.. 무턱대고 바꿔보면 웬지 꼬일꺼같아서 조심스럽습니다
cygwin 에서 FFmpegBasic 프로젝트 폴더로 이동한뒤 rm -r obj 를 치고
폴더를 지운뒤 이클립스에서 다시 빌드하니까 빌드는 오류없이 잘됐습니다.  
그리고 다시 앱을 실행해 봤는데 아까같은  오류가 뜨네요...
자바코드상 비디오경로가 잘못되었어도 토스트메시지는 뜨지 않나요 ?  
java.lang.UnsatisfiedLinkError: Couldn't load basicplayer from loader dalvik.system.PathClassLoader[dexPath=/data/app/net.jbong.FFmpegBasic-1.apk,libraryPath=/data/app-lib/net.jbong.FFmpegBasic-1]: findLibrary returned null

아까와 다른점이 있다면 경로뒤에 -2 가 붙었는데 이젠 -1이 붙네요
정리하자면 .. 자바코드의 System.loadLibrary("basicplayer"); 부분에서 에러가 나고 오류 로그는 밑에처럼 나옵니다
java.lang.UnsatisfiedLinkError: Couldn't load basicplayer from loader dalvik.system.PathClassLoader[dexPath=/data/app/net.jbong.FFmpegBasic-1.apk,libraryPath=/data/app-lib/net.jbong.FFmpegBasic-1]: findLibrary returned null
클린 빌드 해보세요.. 빌드해서  libbasicplayer.so와 libffmpeg.so가 libs/armeabi 폴더에 들어가야 합니다. 안 들어가면, libffmpeg쪽 빌드하다 오류 났을 겁니다.
클린빌드는 몇번이고 해봤습니다 .. 그렇다면  사악미소님이 말씀해주신
libffmpeg쪽 빌드 오류 일텐데 이쪽 빌드오류이면 맨처음부터 다시해야되는건가요?
아 제가 착각했네요.. 남은 그루터기님 라이브러리는 static으로 libffmpeg가 빌드해서 들어가기 때문에. libffmpeg.so 가 안생기겠네요..  클린 빌드가 잘 되었고, libs/armeabi 폴더에 libbasicplayer.so가 들어있으며, 사이즈가 몇메가가 된다면, 정상 빌드 되었다 보시는게 맞을 듯 합니다.
libbasicplayer 쪽에 특정 심볼이 없어 로드가 안되는건데. 어떤 단말로 하신건가요? NEON이 없거나. arm쪽 단말이 아니면, so 로드 안 될 수 있습니다.
친절한 답변 감사합니다
제 단말은 노트2 입니다
저는 libbasicplayer.so  자체가 생성이안되는데 뭔 문제일까요 ..
삽질할껀 각오하고있었지만 진전이 많이는 없네요..  
빌드시 마지막줄이 [armeabi-v7a] SharedLibrary : libbasicplayer.so  까지 뜨면 제 생각에는 오류는 없는듯 한데 libs/armeabi-v7a 폴더는 생성이되는데 그밑으로 라이브러리 파일이 생성이 안되네요
라이브러리 파일을 생성시 경로를 지정하는 부분이 있나요 ?
파일 생성 경로는 별도로 지정 할 필요 없습니다. 자세한 로그를 보시고 싶으시면, 이클립스가 아닌 커멘드라인으로 빌드 해보세요..
커멘드라인으로  그루터기님 소스의 맨위(AnroidManifest.xml 파일이 있는곳) 에 가서 "ndk-build V=1" 를 입력해서 빌드 해보세요..  (ndk-build는 android-ndk에 있는 스크립트이니 패스를 지정하던지 풀경로를 주세요)
그럼 자세한 로그가 나오니 어디서 오류가 났는지 부터 확인 해 보시기 바랍니다.
어제 v1 치고 한줄한줄 보니 워닝만 주구장창 있고 에러는 없더군요.. 으 .. 오늘도 도전해봐야겠습니다..
프로그래밍계에서 이렇게 친절하게 답변해주는 분은 많지않은데 정말 감사합니다.
...