在Android Studio的Terminal下敲gradlew -q app:dependencies 命令莺戒,可以查看所有支持庫若厚,用于檢查沖突資源位置
舉例
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile ('com.android.support:design:22.2.1')
compile 'com.shamanland:fonticon:0.1.8'
androidTestCompile 'com.android.support:support-annotations:22.2.1'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2')
}
debugApk - ## Internal use, do not manually configure ##
+--- com.android.support:multidex:1.0.1
+--- com.android.support:appcompat-v7:22.2.1
| \--- com.android.support:support-v4:22.2.1
| \--- com.android.support:support-annotations:22.2.1
+--- com.android.support:design:22.2.1
| +--- com.android.support:appcompat-v7:22.2.1 (*)
| \--- com.android.support:support-v4:22.2.1 (*)
\--- com.shamanland:fonticon:0.1.8
仔細看上面的依賴,com.android.support:appcompat-v7:22.2.1 和com.android.support:design:22.2.1,有共同依賴一個com.android.support:support-v4:22.2.1庫,且com.android.support:design:22.2.1 依賴于com.android.support:appcompat-v7:22.2.1罩驻,但從打印出的信息可以看出com.android.support:design:22.2.1 依賴兩個庫的信息被打了星號標記,這標記意思是忽略這兩個依賴的意思护赊,也就是說不去下載這兩個庫惠遏。
從上面的兩個例子來看砾跃,gradle對于需要多個版本的依賴庫來說,一般只會下載你配置導入那個版本节吮,如果沒有手動導入抽高,那就會下載所有模塊依賴的最新版本那個庫,面對多個模塊依賴同一個庫透绩,每個模塊不都會去下載該依賴庫翘骂,而是下載一個該依賴庫,共享給多個模塊帚豪。
修改配置為:
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile ('com.android.support:design:22.2.1')
{
exclude group: 'com.android.support'
}
compile 'com.shamanland:fonticon:0.1.8'
androidTestCompile 'com.android.support:support-annotations:22.2.1'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2')
{
exclude group:'com.android.support.test'
}
}
exclude: 作用是排除不需要的依賴庫
group 指定不需要的支持庫