天天看點

AS的那些坑---so庫的依賴

寫在前頭

這篇blog是用來洩憤的,感覺沒有寫的話我今天自己受自己的那些氣就白受了

因為so庫的依賴問題,我把騰訊地圖改成了百度地圖

還是因為so的問題,改了百度地圖差點又換成高德了

然而想想,肯定不是so的問題,絕逼是依賴的方式不對

因為Demo完全沒問題

然後就懵逼了一天

網上找了各種方法,各種嘗試都不見效

然而一個點子,就那麼點一下,就都通了

--------------------廢話分割線-----------------------

再廢話一下,有時候技術就是差那麼一點,一個地方沒做好,他就是沒辦法跑起來,是以馬虎不得

----------------------廢話再次分割線-----------------------

廢話說完,開始解決問題

本次要解決的問題是android studio的so庫依賴問題

工具:Android Studio

場景:從es導過來的一個項目,然後手動更新so庫跟jar包

問題:項目中總是找不到so庫

1、基礎版so庫依賴

先說一下AS怎麼依賴so庫吧

用一個小例子來說明

AS的那些坑---so庫的依賴

界面很簡單,就一個按鈕點選,上面顯示定位位址

接下來我們下載下傳百度的Demo,依葫蘆畫瓢把百度定位內建上去

需要注意的是

将工程目錄切換到project視圖,将jar檔案拷貝到libs目錄下,并且選中全部,右鍵添加到庫

在與java同級目錄下建立一個jniLibs目錄,将so庫拷貝到這個目錄下面

接下來運作看看

AS的那些坑---so庫的依賴

很好,完全沒問題,項目目錄是這樣的

project下的視圖

AS的那些坑---so庫的依賴

android下的視圖

AS的那些坑---so庫的依賴

需要注意的是我們的項目名稱叫app

Gradle是這樣子的

AS的那些坑---so庫的依賴

好的,你如果是從AndroidStudio那邊直接建立一個項目再做依賴的話,那完全沒有問題,還挺簡單

2 Es項目遷移過來版的so庫依賴問題

那麼問題就來了

我們先建立一個es項目吧,讓問題重制

很快,eclipse的做好了,上圖

界面跟剛才AS的差不多

AS的那些坑---so庫的依賴

ES的工程目錄比較簡單

AS的那些坑---so庫的依賴

運作起來也是沒問題

上圖

AS的那些坑---so庫的依賴

嗯,蠻快的,現在我們需要把ES的項目導入as

運作起來也是沒問題的,我就不截圖了

接下來看看

AS的那些坑---so庫的依賴

嗯,完全沒問題,但是因為項目太過簡單,我們得做一些手腳

我們把項目名稱由app--->esApp

因為很多時候我們的項目足夠複雜或者你依賴的一些庫包含一個完整的Demo的話,AS就不會将我們的主要應用自動識别并改名叫app

可惜這個場景沒有再重制,後面看到再來補充

就是當你的項目名稱不是app時就會出現找不到so庫的情況

原因是因為AS預設的so庫的路徑是app\src\main\jniLibs,如果你的項目名稱不是app的話就找不到so檔案

是以有兩種解決方法

一 将你的主項目名稱改為app

二 将so庫都放在libs目錄下,然後再gradle那邊配置

AS的那些坑---so庫的依賴

這樣運作起來就沒問題了