问题

在Andorid Studio中查看Gralde添加的依赖时,只有平行的一级,看不出任何从属关系,特别是出现依赖冲突的时候,在build.gralde中根据没有添加的包,怎么会出现冲突呢?真让人摸不着头脑。

平行的依赖

参考

在maven中提供了树形依赖来清晰的查看依赖关系

1
mvn dependency:tree -Dverbose -Dincludes=commons-collections

结果:

1
2
3
4
5
6
7
8
9
[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile

解决办法

在Gralde这里也可以达到相同的效果

Gradle Panel

在Gradle Panel中打印,Project和Module都支持。

Gradle

运行输出:
1
2
3
4
5
6
7
8
9
10
11
12
12:02:24 PM: Executing external task 'androidDependencies'...
:core:androidDependencies
debug
+--- LOCAL: libGoogleAnalyticsV2.jar
+--- LOCAL: CWAC-SackOfViewsAdapter.jar
+--- LOCAL: ushahidi_sdk-1.1.jar
+--- com.android.support:support-v4:22.2.0
| \--- LOCAL: internal_impl-22.2.0.jar
\--- com.google.android.gms:play-services:8.1.0
+--- com.google.android.gms:play-services-ads:8.1.0
| +--- com.google.android.gms:play-services-basement:8.1.0
......

项目层添加gradle脚本

在项目根目录下build.gradle中添加

1
2
3
subprojects {
task allDeps(type: DependencyReportTask) {}
}

在Android Studio Terminal下运行

1
./gradlew allDeps

可以得到全部依赖的树形结构

1
2
3
4
5
6
7
8
androidJacocoAnt - The Jacoco ant tasks to use to get execute Gradle tasks.
\--- org.jacoco:org.jacoco.ant:0.7.4.201502262128
+--- org.jacoco:org.jacoco.core:0.7.4.201502262128
| \--- org.ow2.asm:asm-debug-all:5.0.1
+--- org.jacoco:org.jacoco.report:0.7.4.201502262128
| +--- org.jacoco:org.jacoco.core:0.7.4.201502262128 (*)
| \--- org.ow2.asm:asm-debug-all:5.0.1
\--- org.jacoco:org.jacoco.agent:0.7.4.201502262128

打出出来的结果很长,也有很多重复的部分,由于不同的配置。
可以指定配置

1
./gradlew allDeps --configuration default

使用Andorid Studio gradle view plugin

gradle view plugin
体现了Android Studio基于Intellij平台的优势。
安装:Android Studio->Preferences->Plugins->Browser Repositories,搜索Gradle View安装。(如果显示或下载有问题,科学上网,你懂的)
结果:

gradle

结论

建议多种方法配合使用,脚本可搜索,但是每个项目需要自行添加,插件一劳永逸,可视化操作,但不支持搜索,当你要解决依赖冲突时,搜索是最快发现问题的途径。