1. 程式人生 > >Android 百度地圖 java.lang.UnsatisfiedLinkError: Couldn't load vi_voslib: findLibrary returned null

Android 百度地圖 java.lang.UnsatisfiedLinkError: Couldn't load vi_voslib: findLibrary returned null

現在的App,都像跟風狗一樣,只要是熱門的功能,都加上,導致最後一個小小的App,有了聊天功能,有了分享功能,有了拍照功能,有了語音功能……,實力足夠的話(或者網上有現成程式碼),就他媽差點做個作業系統進去了。

而其中一些功能,需要藉助第三方,這就涉及到一個第三方選擇的問題,我一般不喜歡小公司的產品,不是看不起小公司,主要是小公司的產品質量確實不能保證,而且產品的延續性得不到保障。

今天做給我們的App加地圖功能,使用系統的地圖是不現實的了(考慮到某些機器上面沒有地圖應用),最後決定使用百度地圖,說實話,我用了百度的不少API,整合都相對簡單,而且可靠。可地圖API把我弄慘了。我完全按照說明文件和demo來搞的,但是就是一直報以下錯誤:

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load vi_voslib: findLibrary returned null

網上查了一些說明,沒有解決,後來去官網,官網說可能是混淆的問題,我加了混淆過濾,也不起作用(而且一看這個錯誤,就是沒有載入到vi_voslib的原因,而不是混淆),百般無奈,轉戰高德地圖,發現高德地圖和百度地圖的形式太他媽一樣了,好多類名都一樣,看來又是挖IT民工牆腳啊。但是高德地圖的key有效期只有30天,後面好像要收費,沒辦法,又轉過來搞百度地圖,程式碼沒動,在同事的手機上可以正常執行,但是我的手機就不行,還是保上面的錯誤,搞不懂啊。後來根據以前做NDK的經驗,發現.so檔案在libs\armeabi和libs\armeabi-v7a都應該有副本,具體原因好像是應對不同的cpu型號,於是我就把.so檔案在libs\armeabi-v7a下也放了一份,尼瑪,解決了……

後面遇到同樣問題的孩子,看到這篇文章,要謝恩啊,我現在都還搞不懂為什麼就解決了。