Android解决调用JNI报java.lang.UnsatisfiedLinkError: No implementation found for的错误
最近公司項目需求接入即時通訊功能,現(xiàn)在第三方的即時通訊做的比較完善,接入也很方便。最近在調(diào)試語音的時候遇到了一個.so庫加載失敗的問題,在網(wǎng)上查看都是說由于原有項目的so庫和新添加的model的so庫數(shù)量不一致。具體報錯如下:
java.lang.UnsatisfiedLinkError: No implementation found for void com.moor.imkf.mp3recorder.util.LameUtil.init(int, int, int, int, int) (tried Java_com_moor_imkf_mp3recorder_util_LameUtil_init and Java_com_moor_imkf_mp3recorder_util_LameUtil_init__IIIII)at com.moor.imkf.mp3recorder.util.LameUtil.init(Native Method)at com.moor.imkf.mp3recorder.MP3Recorder.initAudioRecorder(MP3Recorder.java:164)at com.moor.imkf.mp3recorder.MP3Recorder.start(MP3Recorder.java:74)at com.m7.imkfsdk.recordbutton.AudioManager.prepareAudio(AudioManager.java:65)最初以為是自己的so庫找不到,我刪掉重新加載發(fā)現(xiàn)還是同樣的問題。百度查看說將自己的apk解壓后找到lib文件夾下的so庫,然后和項目里so庫比較種類是否一致。于是我照著這個方法打了一個apk安裝包,然后右鍵解壓找到lib文件夾,發(fā)現(xiàn)里面的so庫如圖:
然而我項目里的so庫如圖:
通過解壓apk得到的lib文件夾里的so庫和我自己項目里用的so庫數(shù)量和種類明顯不一致,原因找到了,那么下面就是解決辦法:
將項目里引用的library里的so文件復(fù)制到app下存放so庫的位置,然后將app下的so庫在復(fù)制到每個library下的so庫位置。也就是合并app和每個library里面的so庫,讓app和每個library里面的so庫在數(shù)量和種類都相同。
然后clean整個項目在重新編譯一下就會發(fā)現(xiàn)問題解決了,如果對上述操作有不明白的地方,可以評論留言告知我,我會做詳細(xì)解答。
總結(jié)
以上是生活随笔為你收集整理的Android解决调用JNI报java.lang.UnsatisfiedLinkError: No implementation found for的错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python再次拿第一,我一点都不意外,
- 下一篇: AndroidStudio 自带UI检测