J.D.1731
J.D.1731

Reputation: 415

Android Gradle dependency exclude

One another question about dependency duplication/excluding in gradle. My problem looks like that:

Dependencies tree:

Project Tester App build.gradle

dependencies {
  compile(project(':data.services'))
  compile(project(':my.android.graphics'))
  compile(project(':my.ui.views'))
}

Data.Services build.gradle

dependencies {
  compile(project(':first.webservice'))
}

My Android Graphics build.gradle

dependencies {
  compile(project(':my.android.common.classes'))
}

My UI Views build.gradle

dependencies {
  compile 'me.dm7.barcodescanner:zxing:1.5'
  compile(project(':my.android.common.classes'))
}

My Android Common Classes build.gradle

dependencies {
  compile 'com.android.support:appcompat-v7:25.2.0'
  compile 'com.android.support:support-v4:25.2.0'
  compile 'com.android.support:cardview-v7:25.2.0'
  compile(project(':my.java.common.classes'))
}

My Java Common Classes build.gradle

dependencies {
   compile 'com.mcxiaoke.volley:library:1.0.9'
}

As you can see, duplicates are with my.java.common.classes and my.android.common.classes, I cannot merge it as those libraries are used in different projects and are generally common for different projects.

I was trying to use exclude like that

dependencies {
  compile(project(':data.services')){
    exclude module : ':my.java.common.classes'
  }
  compile(project(':my.android.graphics')){
    exclude module : ':my.java.common.classes'
  }
  compile(project(':my.java.common.classes'))
}

Unfortunately doesn't help much, still has

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK trust_root.bks

 File1: D:\projects\android\my.tester.app\my.java.common.classes\build\libs\my.java.common.classes-1.0.jar
 File2: D:\projects\android\my.tester.app\my.android.common.classes\build\libs\my.android.common.classes-1.2.jar

Any ideas, please help.

Upvotes: 0

Views: 1199

Answers (1)

DeKaNszn
DeKaNszn

Reputation: 2730

You should add this to your build.gradle:

android {
    ...
    packagingOptions {
        pickFirst 'trust_root.bks' // add this
    }
}

Upvotes: 1

Related Questions