在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 指定不需要的支持库
网友评论