android studio gradle依賴解析

Eclipse的依賴

在AndroidStudio出現之前,使用Eclipse開發Android項目的時候,如果需要一個第三方的依賴庫,我們必須找到該依賴,然後下載JAR文件並將其拷貝到項目,引用它。通常這些JAR文件在他們的名稱中沒有版本號,所以需要開發者手動添加JAR的版本,以便知道什麼時候更新,同時還需要確保依賴庫中存儲了源代碼管理系統,以便其他開發者在沒有手動下載這些依賴庫的時候,也可以使用基於依賴的代碼。

AndroidStudio依賴管理

依賴管理是Gradle最吸引開發者的特點之一,相較Eclipse而言,使用AndroidStudio進行項目依賴,只需要在app目錄下的build.gradle文件中添加一行代碼,Gradle從遠程倉庫下載該依賴庫,確保項目能夠使用依賴中的類,甚至在我們依賴的項目有其自己的依賴時,Gradle會自動處理並解決這些問題,這種依賴稱之爲傳遞依賴

注:一個倉庫可以看做是文件的集合

Gradle依賴分析

關鍵字:compile

一個依賴通常是由三種元素定義的:group、name、version。

group:創建了該依賴庫的組織,通常是反向域名

name:依賴庫的唯一標識

version:需要使用該依賴庫的版本號

使用以上三個元素,就可以在app的build.gradle文件的dependencies代碼塊中聲明一個依賴:

Glide依賴:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.8.0'
}

對應Groovy的映射標識:
group:com.github.bumptech.glide
name:glide
version:3.8.0

注:對於一個依賴庫來說,其唯一需要的字段是name.group和version都是可選元素,當然爲了表示清楚,還是建議添加group,而version可以確保依賴庫不會自動更新,因爲這可能導致構建失敗

動態化依賴版本

在某些情況下,開發者希望在每次構建應用或依賴庫時,都希望能夠獲取到最新的依賴,這時候就可以使用動態化版本,例:

dependencies {
    compile 'com.github.bumptech.glide:glide:+'
}

使用動態化版本需要注意的是:如果我們允許Gradle獲取最新版本,則很可能Gradle獲取的依賴版本並不穩定,會導致構建中斷,更糟糕的是,這可能會導致在構建服務器上和我們自己的機器上運行着不同的版本,從而導致應用程序的行爲不一致。

使用AndroidStudio添加依賴

1.File -> Project Structure
這裏寫圖片描述
2.app -> Dependencies -> + ->Library Dependency
這裏寫圖片描述
3.輸入依賴庫搜索添加
這裏寫圖片描述
在某些情況下,開發者仍然需要手動下載JAR文件或原生庫,甚至有些開發者會創建自己的依賴庫,這樣就可以在沒有將其發佈到共有或私有倉庫時在多個項目中複用。這種情況下,沒有辦法是用任何在線資源,必須通過其他方式來添加依賴:

1.文件依賴

使用Gradle提供的Files方法來添加JAR文件作爲一個依賴,例:
項目的app目錄libs目錄下有一個lbjfan.jar文件,那麼我們可以使用如下代碼:

dependencies {
    compile files('libs/lbjfan.jar')
}

當我們的jar文件很多時,這種方式會變得異常繁瑣,因此我們可以一次添加一個完整的文件夾:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

注:將libs目錄下以jar結尾的文件作爲依賴

2.原生依賴庫

用C或C++編寫的依賴庫可以被編譯爲特定平臺的原生代碼,這些依賴庫通常包含幾個.so文件,可用於所有平臺。Android插件默認支持原生依賴庫,開發者所需要的就是在模塊層創建一個jniLibs文件夾,然後爲每個平臺創建子文件夾,將.so文件放在適當的文件夾中。

當然我們也可以在構建文件中自定義相關位置:

app目錄下的build.gradle文件中,Android代碼塊中:

android {
    sourceSets.main{
        jniLibs.srcDir 'src/main/libs'
    }
}

3.項目依賴

一個依賴項目是一個使用Android APIS或Android資源的依賴庫,通常和應用項目類似,不同之處在於應用項目生成一個可被安裝運行在Android設備上的APK,依賴項目則生成一個.aar文件

3.1 創建和使用依賴項目模塊

不同於應用Android應用插件,構建腳本需要應用Android依賴庫插件:
在app目錄下的build.gradle文件中

apply plugin: 'com.android.library'

3.2 在應用中包含依賴項目的兩種方式

1.在項目中當做一個模塊

2.創建一個可在多個項目中複用的aar文件

(1)作爲一個模塊
使用一個模塊作爲依賴項目,開發者需要在根目錄的setting.gradle文件中添加該模塊,在應用模塊中將它作爲依賴:

Include ':app',':library'

此時,依賴模塊被稱之爲依賴庫,並且文件夾的名稱與此相同。爲了在Android模塊中使用依賴庫,開發者需要在build.gradle
文件中添加一個依賴庫:

dependencies {
    compile project(':library')
}

(2)用作.aar文件

如果創建了一個依賴庫,並且想在不同的Android引用中複用,開發者可以創建一個.aar文件,然後將其作爲一個依賴添加到項目中。在構建依賴庫時,模塊目錄下的build/output/aar/文件夾將會生成.aar文件。添加一個.aar文件作爲依賴,開發者需要在應用模塊中創建一個文件夾,複製該.aar文件至該文件夾,並添加該文件夾作爲依賴倉庫:

在根目錄的build.gradle文件的repositories代碼塊中添加

repositories{
    flatDir{
        dirs 'aars'
    }
}

同時,在app的build.gradle文件的dependencies中添加:

dependencies{
    compile(name:'libraryname',ext:'aar')
}

告知Gradle查找具有特定名稱且擴展名爲.aar的依賴庫。

小白歡迎大家留言指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章