最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

android - Duplicate class a.a found in modules (In inmobi-cmp and connatix player's dependencies) - Stack Overflow

programmeradmin2浏览0评论

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:-

  1. 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
    }
  1. Adding line android.useAndroidX=true in gradle.properties

  2. Adding below lines to proguard-rules.pro

-repackageclasses 'com.example'
-allowaccessmodification
-useuniqueclassmembernames
-keeppackagenames doNotKeepAThing
  1. 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.

发布评论

评论列表(0)

  1. 暂无评论