我有一个带gradle的Android项目。问题是:
在project
视图中,我看到support-v4
个库的几个版本,例如support-v4-21.0.3
和support-v4-22.2.0
。
但在build.gradle
我根本没有support-v4
。
但我在build.gradle
中有~10个其他依赖项。例如
appcompat-v7:22.2.0
。我可以建议appcompat-v7:22.2.0
在maven依赖关系中依赖support-v4-22.2.0
并隐式提取它。但是我没有提出support-v4-21.0.3
的想法。
据我所知,所有这些libs都将打包在我的APK中并增加APK的重量。
所以我有下一个问题:
support-v4-21.0.3
?答案 0 :(得分:83)
要查找重复的依赖项或其所需的依赖项,您可以在树中可视化库依赖项。执行gradle命令如下。
gradle -q dependencies yourProject:dependencies --configuration compile
请注意,在Windows中运行gradlew
,如下所示。
gradlew -q dependencies yourProject:dependencies --configuration compile
命令结果将显示所有依赖项的人类可读树层次结构,如下所示。
compile - Classpath for compiling the main sources.
+--- org.androidannotations:androidannotations-api:3.2
+--- com.android.support:support-annotations:22.1.1
+--- com.squareup:otto:1.3.6
+--- in.srain.cube:grid-view-with-header-footer:1.0.10
+--- com.nostra13.universalimageloader:universal-image-loader:1.9.3
+--- com.github.chrisbanes.photoview:library:1.2.3
+--- org.simpleframework:simple-xml:2.7.1
+--- com.google.android.gms:play-services-base:6.5.+ -> 6.5.87
+--- project :yourProject
| +--- com.loopj.android:android-async-http:1.4.6
| +--- org.apache.httpcomponents:httpmime:4.2.5
| | \--- org.apache.httpcomponents:httpcore:4.2.4
| \--- com.google.code.gson:gson:2.3.1
+--- project :facebook
| \--- com.android.support:appcompat-v7:22.1.1
| \--- com.android.support:support-v4:22.1.1
| \--- com.android.support:support-annotations:22.1.1 -> 22.2.0
您可以看到覆盖依赖关系,并考虑应避免哪些依赖关系。在上面的示例中,最后一行com.android.support:support-annotations
在内部显示从22.1.1
到22.2.0
的覆盖。
为避免重复,您可以在每个项目exclude
文件中添加build.gradle
子句。
compile('com.github.chrisbanes.photoview:library:1.2.3') {
exclude group: 'com.android.support'
}
compile('org.simpleframework:simple-xml:2.7.1') {
exclude module: 'stax'
exclude module: 'stax-api'
exclude module: 'xpp3'
}
compile('com.google.android.gms:play-services-base:6.5.+')
{
exclude module: 'support-v4'
}
有关详细信息,请参阅https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
上的教程