Entrada duplicada Google Gson

Mi error:

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class 

Estoy tratando de usar Stripe e integrarlo con retrofit. Tengo el archivo Stripe lib build.gradle y el archivo build.gradle de la aplicación.

No veo lo que está causando este error y necesito la dependencia en ambos archivos de build.gradle porque tanto Stripe y Retrofit lo utilizan.

App build.gradle:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "com.weaverprojects.stripe2" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':stripe') //compile 'com.android.support:support-v4:18.0.+' compile 'com.google.code.gson:gson:2.3' compile 'org.parceler:parceler:0.2.13' compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup:otto:1.3.6' compile 'com.squareup.okhttp:okhttp:2.3.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.3.0' } 

Stripe build.gradle:

 apply plugin: 'com.android.library' dependencies { // compile 'com.stripe:stripe-java:1.15.1' // compile 'com.google.code.gson:gson:2.2.4' compile files('libs/gson-2.2.4.jar') compile files('libs/stripe-java-1.15.1.jar') } android { compileSdkVersion 21 buildToolsVersion '23.0.1' defaultConfig { minSdkVersion 7 targetSdkVersion 21 multiDexEnabled = true } } 

Tengo el tarro de la raya y de GSON en la carpeta de las libras así que intenté cambiar:

 compile 'com.google.code.gson:gson:2.3' 

a

 compile files('../stripe/libs/gson-2.2.4.jar') 

En el build.gradle de la aplicación.

¿Qué estoy haciendo mal?

Gracias por adelantado.

La raíz del problema es que estás mezclando una dependencia en un tarro a través de los compile files('libs/gson-2.2.4.jar') y un artefacto maven a través de la compile 'com.google.code.gson:gson:2.3' .

Cuando hace referencia al mismo artefacto Maven en partes separadas de su proyecto, Gradle es capaz de comprender inteligentemente que no debe incluir ambos. Pero, Gradle es incapaz de darse cuenta de que el frasco que está haciendo referencia es el mismo que el artefacto maven que está haciendo referencia.

Solución

En Stripes build.gradle, cambie la referencia de lib para compile 'com.google.code.gson:gson:2.3' y elimine gson-2.2.4.jar de su proyecto completamente.

compile 'com.google.code.gson:gson:2.3' la línea compile 'com.google.code.gson:gson:2.3'

o

Elimine el gson jar de la carpeta lib. Porque ha incluido la biblioteca dos veces una vez en el archivo de compilación y en la carpeta libs.

  • Parsing Gson con Json no funciona para Android
  • Se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY en la línea 1 de la columna 2 path $
  • Clase google gson LinkedTreeMap emitida en myclass
  • Crear objeto de la cadena Gson no funciona
  • Com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY en la línea 1 columna 2
  • Gson 2.2.2 causando un stackoverflow solo en 4.2.1
  • La carga / descarga de imágenes de Android con Base64 en JSON provoca errores de memoria insuficiente
  • ¿Por qué no encontrar android en com.google.gson.Gson
  • Google Play APK y Android Studio APK (depuración USB) se comportan de forma diferente
  • InputStream a JsonObject - GSON
  • Desmontaje de desmontaje de Retrofit + GSON
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.