集成Connatix与InMobi CMP时遇重复类编译错误求助
Android集成Connatix Player SDK与InMobi CMP依赖时的重复类冲突问题
我正尝试在Android应用中集成以下两个依赖:
implementation('com.connatix.sdk:connatixplayersdk:5.1.8') implementation('com.inmobi:inmobicmp:2.1.1')
构建项目时出现如下重复类错误:
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)
已尝试的解决方案(均无效)
- 依赖排除:
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 } - 在
gradle.properties中添加android.useAndroidX=true - 在
proguard-rules.pro中添加以下规则:-repackageclasses 'com.example' -allowaccessmodification -useuniqueclassmembernames -keeppackagenames doNotKeepAThing - 降级两个库的版本
项目相关配置文件
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 "https://public-packages.ops.connatix.com/repository/maven-releases/" } //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.* { *; }
我已花费大量时间仍无法解决该问题,恳请提供技术帮助。
内容的提问来源于stack exchange,提问作者vChamps
相关产品推荐
相关产品推荐

