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;
- Facebook SDK Android AppEventsLogger NullPointerException en color
- SoundPool "AudioFlinger no pudo crear pista, estado: -12"
- Android Telegram App -> java.lang.UnsatisfiedLinkError: No se ha encontrado ninguna implementación para void
- Uso de variables estáticas en Android
- Cómo crear gradiente de fondo animado como Instagram app?
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' }
- Uso del sensor magnético
- Cómo hacer que SearchView pierda el foco y se contraiga al hacer clic en otra parte de la actividad
- ¿Cómo actualizo el SSL cert en mis aplicaciones Android?
- LocationClient getLastLocation () devolver null
- Firmar un apk como sistema usando las claves encontradas en source / build / target / product / security /
- Hacer eclipse depurar mi androide PROYECTO
- Codename One Animation Trouble (también en Solitaire demo)?
- Cómo comprobar si el GPS está desactivado Android
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
- ¿Cómo puedo liberar (forzado, si es necesario) 9-patch (NinePatchDrawable) de memoria en Android?
- Subir vídeo en twitter