1. 程式人生 > 其它 >Android中本地庫aar包依賴

Android中本地庫aar包依賴

技術標籤:Android編譯問題Androidandroidgradle

1. 背景

前一段時間我在開發中需要用到第三方的控制元件Android-PickerView,我在build.gradle中的依賴是這麼寫的:

compile 'com.contrarywind:Android-PickerView:4.1.3'

可以看出這是一個網路庫依賴。由於本地配置了網路代理和國內映象庫,除了第一次需要下載慢一些,編譯執行沒有任何問題。不過在我將程式碼提交到svn上的時候,jenkins標紅了…
在有網情況下,使用網路庫依賴沒問題,但我們的Jenkins伺服器編譯要求離線,所使用的gradle版本也相對較低,因此只能就不能使用網路庫依賴了。

由於上述依賴並不是純Java程式碼,還包括了資原始檔,使用aar包依賴比較方便。

2. 使用aar包依賴

較高版本gradle的支援更簡單的aar引用方式,不過低版本的gradle卻並不能相容。網上的文章多數都是較高版本gradle使用aar依賴的方式,不過我們的svn上使用的gradle版本較低,這裡將描述高低兩種版本gradle使用aar依賴的方式。

2.1較高版本gradle中引用aar依賴

這裡較高版本gradle使用是gradle 4.1,對應Android Studio gradle 3.0.1外掛。高版本gradle上使用aar本地依賴很簡單,基本上與jar的依賴方式一致。
1)將所需要的aar包copy到應用所在module的libs目錄下

2)在應用所在module裡的build.gradle裡新增:

compile fileTree(dir: 'libs', include: ['*.aar'])

或者如果同時有jar依賴的話,可以寫成:

compile fileTree(dir: 'libs', include: ['*.jar','*.aar'])

2.2較低版本gradle中引用aar依賴

這裡較低版本使用的gradle版本是2.2.1,相應的gradle外掛版本為1.2.3。使用方式其實也不麻煩。
1)將所需要的aar包copy到應用所在module的libs目錄下
2)在應用所在module裡的build.gradle新增依賴(以新增的檔案pickerview.aar,wheelview.aar為例):

 compile(name: 'pickerview', ext: 'aar')
 compile(name: 'wheelview', ext: 'aar')

然後在在build.gradle最外層新增

repositories {
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

注意低版本gradle 支援

compile fileTree(dir: 'libs', include: ['*.aar'])

這種依賴方式。
高版本gradle可以相容低版本的這種使用方式。

3. 從網路庫依賴中獲取aar包

aar包可以很方便的進行離線庫依賴。而對於module依賴(Eclipse的專案依賴),也可以將其打包成aar以簡化專案的結構。但是很多很多開源庫的文件基本都是告訴你新增一句compile 語句進行依賴,例如

compile 'com.contrarywind:Android-PickerView:4.1.4'

搜尋下載aar包,有些網路環境下卻並不容易找到合適的aar包下載。如何比較容易的獲取到需要的aar包呢?以下以PickerView為例描述。

3.1 新增網路庫依賴

根據開源庫文件,在module的build.gradle中新增網路庫依賴

compile 'com.contrarywind:Android-PickerView:4.1.3'
  • 點選編譯,編譯時候開啟網路,必要時新增國內映象庫。編譯好後aar檔案就已經在本地快取裡有了。

    3.2 從快取中複製aar檔案

    上述編譯好後將Android Studio切換到Project檢視模式。
  • 展開External Libraries,可以在裡面找到com.contrarywind:Android-PickerView-4.1.3和com.contrarywind:wheelview-4.0.5
  • 右鍵選擇Library Properties可以找到依賴包的快取目錄
  • 複製路徑後並從檔案管理進入到該檔案所在目錄的父級目錄。這裡要注意的一點是我們要使用的不是裡面羅列的jar檔案。
  • 在該目錄地下找到某個目錄中所包含的aar檔案,我這裡是
Android-PickerView-4.1.3.aar

將該檔案copy出來備用
以同樣的方式獲取並copy出

wheelview-4.0.5.aar

這兩個aar檔案就可以以作為aar依賴離線引用了。
注意:以上使用的是Android Studio3.0.1進行的操作。如果用的Android Studio版本較低,右鍵可能沒有Library Properties這一選項。這種情況下,可以在setting中找到快取根目錄,如

C:\Users\user\.gradle\

進入到快取根目錄後,進入到

C:\Users\user\.gradle\caches\modules-2\files-2.1\

通過新增時間等方式,找到剛剛從網上下載的aar檔案根目錄。
比如我們這個案例就在com.contrarywind目錄下,很容易可以找到所需的兩個aar檔案。

對於獲取到的aar檔案,修改檔名也可以使用。

4. 總結

  • 搜尋工具使用的優先順序會影響效率。剛開始使用搜狗搜尋到許多排名靠前的文章對我有較大誤導,最後還是在stackoverflow上找到了答案。