Android Studio Gradle error "Múltiples archivos dex definir …"

Mi proyecto estaba funcionando bien, cuando he añadido facebook sdk en mi proyecto tengo un error como este, he intentado muchas maneras de arreglar esto, pero no lo hice. ¿Que debería hacer?

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: bolts/AggregateException.class 

Mi gradle de aplicación está por debajo

 apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion '21.1.2' defaultConfig { applicationId "com.example.myproject" minSdkVersion 9 targetSdkVersion 21 versionCode 1 versionName "1.0" multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile project(':facebook') } 

Y aquí está el facebook build.gradle

 apply plugin: 'com.android.library' repositories { mavenCentral() } project.group = 'com.facebook.android' dependencies { compile 'com.android.support:support-v4:[21,22)' compile 'com.parse.bolts:bolts-android:1.1.4' } android { compileSdkVersion 21 buildToolsVersion '21.1.2' defaultConfig { minSdkVersion 9 targetSdkVersion 21 } lintOptions { abortOnError false } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } apply plugin: 'maven' apply plugin: 'signing' def isSnapshot = version.endsWith('-SNAPSHOT') def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" task setVersion { // The version will be derived from source project.version = null def sdkVersionFile = file('src/com/facebook/FacebookSdkVersion.java') sdkVersionFile.eachLine{ def matcher = (it =~ /(?:.*BUILD = \")(.*)(?:\".*)/) if (matcher.matches()) { project.version = matcher[0][1] return } } if (project.version.is('unspecified')) { throw new GradleScriptException('Version could not be found.', null) } } uploadArchives { repositories.mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { authentication(userName: ossrhUsername, password: ossrhPassword) } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: ossrhUsername, password: ossrhPassword) } pom.project { name 'Facebook-Android-SDK' artifactId = 'facebook-android-sdk' packaging 'aar' description 'Facebook Android SDK' url 'https://github.com/facebook/facebook-android-sdk' scm { connection 'scm:[email protected]:facebook/facebook-android-sdk.git' developerConnection 'scm:[email protected]:facebook/facebook-android-sdk.git' url 'https://github.com/facebook/facebook-android-sdk' } licenses { license { name 'The Apache Software License, Version 2.0' url 'https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt' distribution 'repo' } } developers { developer { id 'facebook' name 'Facebook' } } } } } uploadArchives.dependsOn(setVersion) signing { required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } artifacts { archives androidSourcesJar archives androidJavadocsJar } afterEvaluate { androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath } 

Ahora dividen tornillos-androides en pernos-applinks y tornillos-tareas. Por lo tanto, es necesario excluir tanto de la construcción gradle

 compile ('com.facebook.android:facebook-android-sdk:4.10.0'){ exclude group: 'com.parse.bolts', module: 'bolts-tasks' exclude group: 'com.parse.bolts', module: 'bolts-applinks';} 

Esto funciona perfectamente para mí !!!!

Para mí, yo estaba agregando Facebook SDK como un proyecto, y lo configuró como dependencias.

Sin embargo, el trabajo de exclusión después de conmutar para utilizar la fuente maven.

Creo que es sólo para maven, no para dependencias de proyectos? (Proporcione la información correcta si alguien sabe sobre esto)

En otras palabras, ahora puede eliminar el proyecto y los archivos de Facebook SDK.

Recuerde agregar

 repositories { mavenCentral() } 

Si usted no estaba usando maven.

Así que el build.gradle se ve así, comenté la forma del proyecto.

 repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile project(':google-play-services_lib') compile ('com.facebook.android:facebook-android-sdk:3.23.0'){ exclude module: 'bolts-android' exclude module: 'support-v4' } // compile (project(':FacebookSDK')){ // exclude module: 'bolts-android' // exclude module: 'support-v4' // } compile (project(':UserVoiceSDK')){ exclude module: 'support-v4' } } 

He tenido un problema similar. Esto fue muy frustrante para mí porque todo funcionó bien y de repente se rompió sin razón.

El problema se insinúa en la duplicate entry: bolts/AggregateException.class . Es un choque de la biblioteca Bolts, utilizado por Facebook y Parse.

Para mí, el problema radica en estas dos líneas:

 compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.parse.bolts:bolts-android:1.1.4' 

Había descargado las bibliotecas Parse y las había puesto en la carpeta /libs/ . El problema era que había otro archivo de bolts-android en esa carpeta.

La solución es eliminar esa biblioteca y mantener compile 'com.parse.bolts:bolts-android:1.1.4' .

Problema alternativo

En mi caso, he utilizado compile 'com.parse.bolts:bolts-android:1.+' lugar de una versión específica. Esto siempre toma la última versión. Así que cuando los bolts actualizaron a la versión 1.2.0 , la cosa pareció romper aleatoriamente porque de repente la versión en la carpeta /libs/ y la última versión ya no estaban alineadas.

La mejor práctica es evitar 1.+ versiones de estilo y simplemente seguir revisando y actualizando a la última versión de vez en cuando.

Espero que esto ayude a alguien.

No hay necesidad de eliminar los archivos jar. En el archivo Gradle hemos escrito estas dos líneas

 compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.parse.bolts:bolts-android:1.1.4' 

Solo quita

 compile fileTree(dir: 'libs', include: ['*.jar']) 

Porque estamos compilando todos los archivos jar y luego de nuevo incluyendo los pernos para compilar debido a que el error se muestra

En mi caso el i había agregado un .jar en el código de la biblioteca. La biblioteca a su vez se utiliza en la aplicación principal. El dex estaba todavía en el archivo de caché incluso si había limpiado mi proyecto y lo había instalado. Para estar seguro en la aplicación principal puede comprobar el recuento de la biblioteca. El archivo de caché es "Project -> build -> dex-cache -> cache.xml". Si tienes varios recuentos de la biblioteca entonces necesitas hacer esto en Android Studio -> File -> invalidate cache / restart

  • Aplicación para Android de Facebook: expiración de token de acceso (expires_in) siempre es 0
  • La aplicación se bloquea después del primer inicio de sesión en Facebook
  • Android facebook sdk publicar la alimentación a la línea de tiempo del usuario
  • Facebook SDK 3 EOFException
  • ¿De dónde viene este error? Error: com.facebook.FacebookException: Error al obtener el nombre de la aplicación
  • ¿Cómo puedo añadir facebook SDK al proyecto android?
  • No se pudo encontrar el método release () para los argumentos
  • Android Facebook SDK Compartir diálogo: nunca volver Completion Gesture
  • Abrir una página de Facebook desde la aplicación Android?
  • Android y Facebook SDK: descodificación de imágenes de / me / picture graph call
  • Facebook android shareDialog se cierra después de abrir
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.