微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从Android项目中的gradle中删除传递依赖项

我试图从我的Android项目中删除传递依赖项,并且由于某种原因,当我尝试从我的特定依赖项中删除依赖项时,排除不起作用.

例如,我想从我的项目中删除支持注释

如果我使用

configurations {
    all*.exclude group: 'com.android.support', module:'support-annotations'
}

从依赖关系中排除依赖关系.我可以通过使用./gradlew app:dependencies

enter image description here

来查看依赖关系树

但如果我使用

 compile('com.android.support:support-v4:23.4.0')
            {
                exclude group: 'com.android.support', module:'support-annotations'
            }

然后我仍然在依赖关系tree.

enter image description here

中看到依赖关系

所以我的问题是,当我尝试从特定依赖项中删除依赖项时,为什么它不起作用?

更新1:

也可以有人告诉我树中依赖项旁边的星(*)符号代表什么?

更新2

我也在使用Fresco我和Fresco尝试了同样的事情并且排除规则似乎适用于它

Fresco的依赖树

enter image description here


当我在Fresco中排除imagepipeline-base时的依赖关系树

compile("com.facebook.fresco:fresco:0.9.0")
            {
                exclude group: 'com.facebook.fresco', module: 'imagepipeline-base'
            }

enter image description here

如您所见,imagepipeline-base依赖项被排除在外.所以我不知道为什么这对Android支持注释传递依赖不起作用

解决方法:

所以我在一位朋友的帮助下想出了这个.我无法删除支持注释的原因是因为大多数其他依赖项都使用support-v4作为传递依赖,而那些support-v4也有自己的支持注释副本.

现在有两个解决方

解决方案1:

从包含support-v4作为传递依赖的所有依赖项中排除support-annotation.

解决方案2:

仅从我的support-v4依赖项中排除support-annotation,并从support-v4作为传递依赖项的所有其他依赖项中删除support-v4依赖项.

注意:使用上述方法之一,我能够解决我的问题,并弄清楚当从多个依赖项引用它们时如何删除传递依赖项.

关于(*)符号,这意味着已经显示了依赖性树用于该依赖性.而不是再显示那些依赖关系的整个树,gradle显示(*)符号.

示例build.gradle文件可用here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐