Excluyendo archivos .class de Gradle dependecy

Estoy intentando importar https://github.com/Kickflip/kickflip-android-sdk usando gradle en mi android build y estoy recibiendo:

EXCEPCION INESPERADA DE NIVEL SUPERIOR: com.android.dex.DexException: Varios archivos dex definen Lorg / apache / commons / codec / binario / Base64;

Commons.codec es una dependencia de mi proyecto, pero no directamente del proyecto kick-flip, creo que viene de uno de los tarros incluidos allí. Puedo ver los archivos .class si abro las clases de Kickflip.jar.

¿Cómo puedo excluir a Base64.class de ser importado de kickflip en la compilación final? He mirado usando ziptree para excluir cosas pero no he podido conseguir cualquier cosa trabajar.

Gracias

Mi build.gradle es:

apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.3" defaultConfig { minSdkVersion 10 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/ASL2.0' } android.applicationVariants.all{ variant -> // This is an annoying hack to get around the fact that the Gradle plugin does not support // having libraries with different minSdkVersions. Play Services has a min version of 9 (Gingerbread) // but Android Maps Utils supports 8 (Froyo) still variant.processManifest.doFirst { File manifestFile = file("${buildDir}/exploded-aar/io.kickflip/sdk/0.9.9/AndroidManifest.xml") if (manifestFile.exists()) { println("Replacing minSdkVersion in Android Maps Utils") String content = manifestFile.getText('UTF-8') content = content.replaceAll(/minSdkVersion="18"/, 'minSdkVersion=\"10\"') manifestFile.write(content, 'UTF-8') println(content) } } } } dependencies { compile 'com.android.support:support-v4:19.1.0' compile 'io.kickflip:sdk:0.9.9' compile fileTree(dir: 'libs', include: '*.jar') compile project(':libs:typeface-textview:library') compile project(':libs:gpuimage') compile 'com.google.android.gms:play-services:4.3.23' compile 'com.nineoldandroids:library:2.4.0' compile 'com.koushikdutta.urlimageviewhelper:urlimageviewhelper:1.0.4' compile ('fr.avianey:facebook-android-api:3.14.0') { exclude module: 'support-v4' } compile 'com.github.japgolly.android:svg-android:2.0.1' compile 'org.scribe:scribe:1.3.5' compile 'commons-codec:commons-codec:1.8' } 

Probablemente el problema es la clase Base64 incluida dos veces. Es en el 'google-http-cliente' ( verlo ). Intente excluir esta clase. Si tienes suerte, siendo una clase Util, no se usa en el código.

Pruebe esto en su build.gradle:

 package com.google.api.client.util; sourceSets { main { java { exclude 'com.google.api.client.util.Base64.java' exclude 'org.apache.commons.codec.binary.Base64.java' } } } 

NOTA: No lo probé todavía, pero suena como una posibilidad

  • Necesidad de convertir AssetInputStream a FileInputStream
  • Uso de genéricos en código Java de Android
  • Android - Webview Progressbar
  • Cómo agregar una nueva etiqueta html con Jsoup?
  • El tamaño del anuncio y el ID de la unidad de anuncio deben estar configurados antes de cargarla.
  • OpenGL de Android: IllegalArgumentException utiliza buffer de orden nativo directo
  • Compruebe la conexión a Internet activa Android
  • ¿Existe una sofisticada API Java WorkQueue?
  • gdx analiza archivos de diseño en archivos de objetos
  • No se puede crear un usuario con la última versión de Firebase. Consigo un W / DynamiteModule y W / GooglePlayServicesUtil
  • ¿Cuál es la forma correcta de configurar Android applicationId cuando se utilizan dimensiones de sabor?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.