问题
在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都支持。
运行输出:
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 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安装。(如果显示或下载有问题,科学上网,你懂的)
结果:
结论
建议多种方法配合使用,脚本可搜索,但是每个项目需要自行添加,插件一劳永逸,可视化操作,但不支持搜索,当你要解决依赖冲突时,搜索是最快发现问题的途径。