Android解决调用JNI报java.lang.UnsatisfiedLinkError: No implementation found for的错误
最近公司項(xiàng)目需求接入即時(shí)通訊功能,現(xiàn)在第三方的即時(shí)通訊做的比較完善,接入也很方便。最近在調(diào)試語(yǔ)音的時(shí)候遇到了一個(gè).so庫(kù)加載失敗的問(wèn)題,在網(wǎng)上查看都是說(shuō)由于原有項(xiàng)目的so庫(kù)和新添加的model的so庫(kù)數(shù)量不一致。具體報(bào)錯(cuò)如下:
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庫(kù)找不到,我刪掉重新加載發(fā)現(xiàn)還是同樣的問(wèn)題。百度查看說(shuō)將自己的apk解壓后找到lib文件夾下的so庫(kù),然后和項(xiàng)目里so庫(kù)比較種類(lèi)是否一致。于是我照著這個(gè)方法打了一個(gè)apk安裝包,然后右鍵解壓找到lib文件夾,發(fā)現(xiàn)里面的so庫(kù)如圖:
然而我項(xiàng)目里的so庫(kù)如圖:
通過(guò)解壓apk得到的lib文件夾里的so庫(kù)和我自己項(xiàng)目里用的so庫(kù)數(shù)量和種類(lèi)明顯不一致,原因找到了,那么下面就是解決辦法:
將項(xiàng)目里引用的library里的so文件復(fù)制到app下存放so庫(kù)的位置,然后將app下的so庫(kù)在復(fù)制到每個(gè)library下的so庫(kù)位置。也就是合并app和每個(gè)library里面的so庫(kù),讓app和每個(gè)library里面的so庫(kù)在數(shù)量和種類(lèi)都相同。
然后clean整個(gè)項(xiàng)目在重新編譯一下就會(huì)發(fā)現(xiàn)問(wèn)題解決了,如果對(duì)上述操作有不明白的地方,可以評(píng)論留言告知我,我會(huì)做詳細(xì)解答。
總結(jié)
以上是生活随笔為你收集整理的Android解决调用JNI报java.lang.UnsatisfiedLinkError: No implementation found for的错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python再次拿第一,我一点都不意外,
- 下一篇: 喜欢的句子