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.
- Hacer que GSON & Realm juegue bien
- Arraylist es del tipo LinkedTreeMap en lugar de Brewer
- ¿Cómo analizar después de JSON usando GSON en android?
- Retrofit 2 RxJava - Gson - Deserialización "Global", tipo respuesta de cambio
- Android: Se ha intentado serializar ... ¿Ha olvidado registrar un adaptador de tipo? "
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.
- Crear cadena JSON con GSON
- Dirección del mapa de Google Api con Retrofit
- GSON: ¿Se esperaba una cadena pero era BEGIN_OBJECT?
- Uso de Gson y Retrofit 2 para deserializar las complejas respuestas de la API
- Gson deserializa puntero nulo en apk liberado
- Retrofit no puede acceder a HttpUrl
- RoboSpice con Gson y Realm
- Jackson JSON Parser rendimiento
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.