현재 어플에서 speex 코덱을 jni를 이용하여 사용하고 있습니다.
ndk로 빌드해서 *.so 파일로 만들어서 잘 사용하고 있는데
마시멜로 버전에서 사용할 때 *.so 파일을 인식하지 못하는 것 같습니다.
에러메시지는 아래와 같습니다.
W/System.err: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memmove" referenced by "/data/app/com.modemgate.accesc-1/lib/arm/libspeex_jni.so"...
W/System.err: at java.lang.Runtime.load(Runtime.java:332)
W/System.err: at java.lang.System.load(System.java:1069)
W/System.err: at com.modemgate.accesc.activity.RequestVoiceActivity.LoadLibrary(RequestVoiceActivity.java:88)
W/System.err: at com.modemgate.accesc.activity.RequestVoiceActivity.onCreate(RequestVoiceActivity.java:145)
W/System.err: at android.app.Activity.performCreate(Activity.java:6904)
W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3267)
W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
W/System.err: at android.app.ActivityThread.access$1100(ActivityThread.java:229)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:148)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7407)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
V/MediaPlayer-JNI: stop
V/MediaPlayer: stop
D/ContentValues: bufferSize:640
I/qtaguid: Untagging socket 101
I/qtaguid: Untagging socket 95
[ 03-29 16:40:17.812 2439:16845 I/ ]
ServiceUtilities : uid = 10245, checkedOpPackageName = com.modemgate.accesc
E/art: No implementation found for int com.modemgate.accesc.activity.RequestVoiceActivity.Speex_open(int) (tried Java_com_modemgate_accesc_activity_RequestVoiceActivity_Speex_1open and Java_com_modemgate_accesc_activity_RequestVoiceActivity_Speex_1open__I)
E/AndroidRuntime: FATAL EXCEPTION: AudioRecorder Thread
Process: com.modemgate.accesc, PID: 3085
java.lang.UnsatisfiedLinkError: No implementation found for int com.modemgate.accesc.activity.RequestVoiceActivity.Speex_open(int) (tried Java_com_modemgate_accesc_activity_RequestVoiceActivity_Speex_1open and Java_com_modemgate_accesc_activity_RequestVoiceActivity_Speex_1open__I)
at com.modemgate.accesc.activity.RequestVoiceActivity.Speex_open(Native Method)
at com.modemgate.accesc.activity.RequestVoiceActivity.writeAudioDataToFile(RequestVoiceActivity.java:299)
at com.modemgate.accesc.activity.RequestVoiceActivity.access$500(RequestVoiceActivity.java:68)
at com.modemgate.accesc.activity.RequestVoiceActivity$2.run(RequestVoiceActivity.java:390)
at java.lang.Thread.run(Thread.java:818)
UnsatisfiedLinkError 를 검색해서 문제를 해결해보려고 했는데 아직까지 해결을 못했습니다.
에러 메시지 상으로는 *.so 파일을 인식하지 못하는 것 같은데 원인을 모르겠습니다.
뭐가 문제일까요?...