Michael A
Michael A

Reputation: 5840

gradle exclude group from compile

I am getting this duplicate error when building my app:

addJar(...facebookadapter-4.0.3.jar): entry
duplicate entry: com/facebook/ads/AbstractAdListener.class

The reason I am getting this is that my app compiles Facebook modules one belongs to an adapter and one to its original SDK:

compile ('com.ironsource.adapters:facebookadapter:4.0.3@jar') compile 'com.facebook.android:audience-network-sdk:4.27.0' compile 'com.google.ads.mediation:facebook:4.27.0.0'

So as a solution, I am trying to exclude this group from the module which contains the adapter jar compile statement:

compile ('com.ironsource.adapters:facebookadapter:4.0.3@jar') {
    exclude (group: 'com/facebook/ads')
}

But, when I build my app again it fails to state the same reason from the same adapter

Any idea why the classes are not being excluded?

Upvotes: 3

Views: 12449

Answers (1)

Nikita Skvortsov
Nikita Skvortsov

Reputation: 4923

Looks like the exclude block syntax is incorrect. Try

compile ('com.ironsource.adapters:facebookadapter:4.0.3@jar') {
  exclude group: 'com.facebook.ads'
}

Update

So it looks like the facebookadapter contains this class inside. You can not exclude a class from a jar file, exclusion only works on per-dependency level.

If you absolutely need to have this adapter, you can try to exclude facebook ads transitive dependency from all the other dependencies.

configurations {
    all*.exclude group: 'com.facebook.ads'
}

Upvotes: 6

Related Questions