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

标签 android android-studio gradle build.gradle gradle-dependencies

我正在尝试从我的 Android 项目中删除传递依赖项,但由于某些原因,当我尝试从我的特定依赖项中删除一个依赖项时,exclude 不起作用。

例如我想从我的项目中删除support-annotations

如果我用

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'
            }

然后我仍然在依赖树中看到依赖。 enter image description here

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

更新 1:

谁能告诉我树中依赖项旁边的 (*) 符号代表什么?

更新 2

我也在用 Fresco我用 Fresco 尝试了同样的事情,exclude rule 似乎适用于它

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 支持注释传递依赖不起作用

最佳答案

所以我在一位 friend 的帮助下解决了这个问题。我无法删除 support-annotation 的原因是因为大多数其他依赖项都使用 support-v4 作为传递依赖项,而那些 support-v4 也有自己的 support-annotation 副本。

现在有两种解决方法

解决方案一:

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

解决方案二:

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

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

关于 ( * ) 符号,它意味着已经显示了该依赖项的依赖树。 gradle 不再显示这些依赖项的整棵树,而是显示带有它们的( * ) 符号。

示例 build.gradle 文件可用 here

关于android - 无法从 Android 项目中的 gradle 中删除传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460667/

相关文章:

java - 将参数传递给 TestNG 运行 - Gradle

安卓测试 : asserting an activity transitioned to another

android - 如何在android中获取动画?

android - 构建 Ionic App 时找不到模块 'shelljs'

android - 下载应用程序 Android Market 时的空白 map

java - 为什么没有检测到 JAVA 版本? Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8

eclipse - Eclipse Gradle集成

Android Studio 布局预览低分辨率

android - 如何在 Android Studio 中放置 9patch 生成的图像?

gradle - Gradle插件测试项目构建失败