She*_*lji 5 android gradle android-studio build.gradle gradle-dependencies
我试图从我的Android项目中删除传递性依赖项,由于某些原因,exclude当我尝试从特定依赖项中删除依赖项时,它无法正常工作。
例如,我想support-annotations从我的项目中删除
如果我用
configurations {
    all*.exclude group: 'com.android.support', module:'support-annotations'
}
依赖关系将从依赖关系树中排除。我可以通过使用./gradlew app:dependencies查看依赖树
但是如果我用
 compile('com.android.support:support-v4:23.4.0')
            {
                exclude group: 'com.android.support', module:'support-annotations'
            }
所以我的问题是,当我尝试从特定依赖项中删除依赖项时,为什么它不起作用?
更新1:
还有谁能告诉我star树中依赖项旁边的(*)符号代表什么?
更新2
我也在用壁画,我尝试过用壁画做同样的事情,但exclude 规则似乎适用
壁画的依赖树

当我imagepipeline-base在壁画中排除时的依赖树
compile("com.facebook.fresco:fresco:0.9.0")
            {
                exclude group: 'com.facebook.fresco', module: 'imagepipeline-base'
            }
如您所见,imagepipeline-base依赖关系被排除在外。所以我不知道为什么这不适用于Android支持批注传递依赖项
因此,我已经在一位朋友的帮助下解决了这个问题。我之所以无法删除,support-annotation是因为其他大多数依赖项都被support-v4用作传递性依赖项,而这些依赖项support-v4也有自己的副本support-annotation。
现在有两种解决方案
解决方案1:
support-annotation从包含support-v4为传递性依赖项的所有依赖项中排除。
解决方案2:
support-annotation仅从我的support-v4依赖项中排除,并support-v4从具有support-v4传递性依赖项的所有其他依赖项中删除依赖项。
注意:使用上述方法之一,我能够解决我的问题,并弄清楚当从多个依赖项中引用传递依赖项时,如何删除传递依赖项。
对于(*)符号,这意味着已经显示了该依赖项的依赖关系树。gradle不再显示这些依赖关系的整个树,而是显示(*)符号。
样本build.gradle文件在这里
| 归档时间: | 
 | 
| 查看次数: | 666 次 | 
| 最近记录: |