I am trying to integrate these two dependencies in my Android app
implementation('com.connatix.sdk:connatixplayersdk:5.1.8')
implementation('com.inmobi:inmobicmp:2.1.1')
While building the project, I am getting these errors:
Duplicate class a.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class a.b found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class b.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class c.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class d.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class e.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class e.b found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class f.a found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class f.b found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class f.c found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
Duplicate class f.d found in modules connatixplayersdk-5.1.8.aar -> jetified-connatixplayersdk-5.1.8-runtime (com.connatix.sdk:connatixplayersdk:5.1.8) and inmobicmp-2.1.1.aar -> jetified-inmobicmp-2.1.1-runtime (com.inmobi:inmobicmp:2.1.1)
What I have already tried:-
- Dependency exclusion:-
implementation('com.connatix.sdk:connatixplayersdk:5.1.8') {
exclude group: 'com.inmobi', module: 'inmobicmp'
}
implementation('com.inmobi:inmobicmp:2.1.1') {
exclude group: 'com.connatix.sdk', module: 'connatixplayersdk' // If inmobicmp's a.a is not needed
}
Adding line
android.useAndroidX=true
in gradle.propertiesAdding below lines to proguard-rules.pro
-repackageclasses 'com.example'
-allowaccessmodification
-useuniqueclassmembernames
-keeppackagenames doNotKeepAThing
- Version downgrading of both the libraries
Unfortunately, neither of the above solution worked.
Source code: (A fresh project with the below files)
build.gradle
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
android {
namespace 'com.example.inmobiconnatixdemo'
compileSdk 35
defaultConfig {
applicationId "com.example.inmobiconnatixdemo"
minSdk 26
targetSdk 35
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
}
dependencies {
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.activity
implementation libs.androidx.constraintlayout
implementation('com.connatix.sdk:connatixplayersdk:5.1.8') //First library
implementation('com.inmobi:inmobicmp:2.1.1') // Second library
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
}
settings.gradle
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url "/" } //In order to get the connatix library dependency
}
}
rootProject.name = "InmobiConnatixDemo"
include ':app'
proguard-rules.pro
## InMobi CMP
-keep class com.inmobi.cmp.ChoiceCmp {public protected *;}
-keep interface com.inmobi.cmp.ChoiceCmpCallback {public protected *;}
-keep class com.inmobi.cmp.model.ChoiceError {public protected *;}
-keep class com.inmobi.cmp.model.NonIABData {public protected *;}
-keep class com.inmobi.cmp.model.PingReturn {public protected *;}
-keep class com.inmobi.cmp.core.model.ACData {public protected *;}
-keep class com.inmobi.cmp.core.model.GDPRData {public protected *;}
-keep class com.inmobi.cmp.core.model.gbc.GoogleBasicConsents {public protected *;}
-keep class com.inmobi.cmp.core.model.Vector {public protected *;}
-keep class com.inmobi.cmp.core.model.mspa.USRegulationData {public protected *;}
-keep class com.inmobi.cmp.data.model.ChoiceStyle {public protected *;}
-keep class com.inmobi.cmp.data.model.ChoiceColor {public protected *;}
-keep class com.inmobi.cmp.model.DisplayInfo {public protected *;}
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { <fields>; }
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep class com.google.gson.reflect.TypeToken
-keep class * extends com.google.gson.reflect.TypeToken
-keep public class * implements java.lang.reflect.Type
##---------------End: proguard configuration for Gson ----------
## AndroidX
-dontwarn com.google.android.material.**
-keep class com.google.android.material.** { *; }
-dontwarn androidx.**
-keep class androidx.** { *; }
-keep interface androidx.* { *; }
I spent too much time to get rid of this issue, but unable to resolve this. Any help will be highly appreciable.
Thanks in advance.