在Android Gradle构建中,如何从包含的jar文件中排除依赖项?

时间:2016-03-19 15:02:41

标签: android gradle jar android-gradle

在我的Android项目中,我使用的是一个jar文件库。 我将它包含在依赖项部分中,如下所示:

dependencies {
    ...

    compile files('libs/thethirdpartylibrary.jar')
    ...
}

我也想使用okhttp库,我包括这样的:

compile ('com.squareup.okhttp:okhttp:2.7.5')

(这个特殊版本的okhttp取决于okio 1.6.0。)

问题是第三方jar库依赖于okio v0.9.0而更糟糕的是捆绑它。

结果,我在构建时遇到了一个dex冲突错误。

我能够通过手动从jar文件中删除okio来解决这个问题,这似乎有效。但我想知道是否有办法在gradle中做到这一点。

我的问题:我可以在构建时使用gradle从包含的jar中删除捆绑的,可传递的(< - 我希望我正确地使用这个词)依赖性吗?

2 个答案:

答案 0 :(得分:24)

使用以下行排除依赖项中的组。

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



2.dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile ("com.xxx:xxx-commons:1.+") {
        exclude group: 'junit', module: 'junit'
    }
}



  3. configurations {
      runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
    }

试试这个。 For more detail

答案 1 :(得分:1)

根据此处的讨论https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs,您想要做的事情是不可能的。

其他答案中建议的语法是针对“普通”Maven依赖项。