Android Plugin DSL Reference 参考文档 :
在上一篇博客中 , 执行
gradlew :app:dependencies
命令 , 可以打印出依赖库以及依赖库的依赖库层级 ,
+--- com.facebook.fresco:fresco:0.14.0
| +--- com.facebook.fresco:drawee:0.14.0
| | \--- com.facebook.fresco:fbcore:0.14.0
| +--- com.facebook.fresco:fbcore:0.14.0
| \--- com.facebook.fresco:imagepipeline:0.14.0
| +--- com.parse.bolts:bolts-tasks:1.4.0
| +--- com.facebook.fresco:fbcore:0.14.0
| \--- com.facebook.fresco:imagepipeline-base:0.14.0
| +--- com.android.support:support-core-utils:24.2.1 -> 28.0.0 (*)
| +--- com.parse.bolts:bolts-tasks:1.4.0
| \--- com.facebook.fresco:fbcore:0.14.0
默认情况下 , 在 build.gradle 中配置 com.facebook.fresco:fresco:0.14.0
依赖 ,
dependencies {
implementation 'com.facebook.fresco:fresco:0.14.0'
}
会自动将其子依赖库 com.facebook.fresco:drawee:0.14.0
, com.facebook.fresco:fbcore:0.14.0
, com.facebook.fresco:imagepipeline:0.14.0
也会加载进来 ;
如果我们不想要解析其子依赖 , 如在其它位置已经有了该依赖 , 则可以进行如下设置 :
dependencies {
implementation 'com.facebook.fresco:fresco:0.14.0', {
transitive false
}
}
在依赖后 , 增加一个闭包 , 使用逗号隔开 ,
在闭包中配置 transitive false
选项 , 即不解析该依赖的子依赖 ;
进行了上述设置后 , 调用 fresco 函数库肯定会出现问题 ;
设置 exclude 属性 , 可以排除依赖库的某个子依赖 , 并且在外部进行依赖 , 可以有效解决依赖库冲突问题 ;
dependencies {
implementation 'com.facebook.fresco:fresco:0.14.0', {
transitive true
// 排除 com.android.support:support-core-utils:24.2.1 子依赖库
exclude(group:'com.android.support', module:'support-core-utils')
}
// 外部单独添加被排除的 com.android.support:support-core-utils:24.2.1 依赖库
implementation com.android.support:support-core-utils:24.2.1
}