从编译依赖项中排除.class文件

时间:2017-04-12 15:23:40

标签: android gradle android-gradle build.gradle

我需要将来自第三方的两个SDK添加到我的应用中。我从maven存储库中获取这些内容。我在项目中创建了一个额外的模块。在这个模块的build.gradle文件中,我把它放在:

dependencies {
    compile('com.abc:abcFirstSdk:0.0.1@aar') {
        exclude module: 'support-v4'
        exclude module: 'support-compat'
        exclude module: "support-annotations"
        transitive = true
    }
    compile('com.abc:abcSecondSdk:0.0.1@aar') {
        exclude module: 'support-v4'
        exclude module: 'support-compat'
        exclude module: "support-annotations"
        transitive = true
    }
}

当我构建项目时,我收到此错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForLocalDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/abc/model/DataModel.class

因此,这两个DataModel.class文件都在SDK中。如何从第二个中排除它?

1 个答案:

答案 0 :(得分:0)

由于您将@aar指定为qualifier,因此会引入AAR文件目录。

Gradle依赖项只是maven依赖项,例如:(GAV @ Q - Group Artifact Id / Name - Version @ Qualifier)。

使用exclude module您尝试删除单个module,但是您在单个AAR文件上使用它而不是实际的maven依赖项本身。

你能发布实际的依赖吗?如果没有,您可以尝试删除@aar

来源: