Android Studio Gradle erreur “Plusieurs dex fichiers de définir...”
Mon Projet était de travailler très bien, quand j'ai ajouté facebook sdk dans mon projet j'ai une erreur comme ça, j'ai essayé de nombreuses façons de résoudre ce problème, mais je n'ai pas. Que dois-je faire?
Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: bolts/AggregateException.class
Mon Application gradle est ci-dessous
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')
}
Et voici le facebook de construire.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
}
Basé sur le suivant stackoverflow.com/questions/27694355/... et stackoverflow.com/questions/26059838/... , vous semblez avoir besoin d'exclure le module de l'Facebook SDK dépendance
Je suppose que dans votre my app construire.gradle votre dossier libs comprend "soutien-v4" pot de version différente. Essayez de l'enlever et de l'exécuter à nouveau...
Où dois-je ajouter exclure du groupe: 'com.l'analyser.de serrage des vis, module: 'boulons-android'
J'ai résolu ce problème avec "multiDexEnabled=true" mais maintenant, compte tenu de l'erreur que de suivre Erreur:échec de l'Exécution de la tâche:app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: double entrée: bolts/AggregateException.class
exclude group: 'com.parse.bolts', module: 'bolts-android'
s'il vous plaît essayer cetteJe suppose que dans votre my app construire.gradle votre dossier libs comprend "soutien-v4" pot de version différente. Essayez de l'enlever et de l'exécuter à nouveau...
Où dois-je ajouter exclure du groupe: 'com.l'analyser.de serrage des vis, module: 'boulons-android'
J'ai résolu ce problème avec "multiDexEnabled=true" mais maintenant, compte tenu de l'erreur que de suivre Erreur:échec de l'Exécution de la tâche:app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: double entrée: bolts/AggregateException.class
compile project(':facebook') { exclude group: 'com.parse.bolts', module: 'bolts-android' }
si cela fonctionneOriginalL'auteur Muhammet Demir | 2015-03-01
Vous devez vous connecter pour publier un commentaire.
Maintenant, ils ont divisé les boulons-android en boulons-applinks et les boulons et les tâches .si vous avez besoin d'exclure à la fois de la gradle construire
Cela fonctionne parfaitement pour moi !!!!
merci ,Il m'a fallu une semaine pour trouver la solution.
Du Bon Travail.!! il fonctionne très bien...
OriginalL'auteur prasanthMurugan
Pour moi, j'étais en ajoutant Facebook SDK comme un projet, et de le définir comme des dépendances.
Cependant, les exclure des travaux après je commutation d'utiliser le maven source.
Je pense que c'est pour le maven seulement, pas pour les dépendances d'un projet? (veuillez fournir les correctes info si quelqu'un sait à ce sujet)
En d'autres mots, vous pouvez maintenant supprimer le Facebook SDK projet et les fichiers.
n'oubliez pas d'ajouter
si vous n'étiez pas à l'aide de maven.
Afin de le construire.gradle ressembler à cela, j'ai commenté le projet.
Tks. Cela a résolu comme un patron de mon problème. mdemir je crois que vous ne comprenez pas la réponse de @Pêche. Après tout, je suis venu ici avec le même douter de vous.
OriginalL'auteur Shing
J'ai eu un problème similaire. C'était vraiment frustrant pour moi, parce que tout a bien fonctionné et tout à coup il s'est cassé sans raison.
La question est fait allusion dans
duplicate entry: bolts/AggregateException.class
. C'est un choc de les Boulons de la bibliothèque, utilisé par Facebook et les Analyser.Pour moi, le problème réside dans ces deux lignes:
J'avais téléchargé l'analyse les bibliothèques et les mettre dans le
/libs/
dossier. Le problème était qu'il y avait un autrebolts-android
fichier dans ce dossier.La solution est de supprimer de la bibliothèque et de garder la
compile 'com.parse.bolts:bolts-android:1.1.4'
partie.Alternative problème
Dans mon cas, j'ai utilisé
compile 'com.parse.bolts:bolts-android:1.+'
au lieu d'une version spécifique. Cela prend toujours la dernière version. Alors, quandbolts
mis à niveau vers la version1.2.0
, la chose paraissait juste au hasard pause parce que tout d'un coup, la version dans le/libs/
dossier et la dernière version n'est plus en phase.Est conseillé d'éviter d'
1.+
style de gestion de version et juste garder le contrôle et la mise à jour vers la dernière version de chaque maintenant et puis.Espère que cela aide quelqu'un.
OriginalL'auteur Muz
pas besoin de supprimer tout les fichiers jar. Dans Gradle fichier que nous avons écrit ces deux lignes
juste enlever
parce que nous sommes en train de compiler tous les fichiers jar et puis, de nouveau, y compris les boulons à compiler en raison de laquelle l'erreur s'est montré
OriginalL'auteur Bhavana Johri
dans mon cas la j'avais ajouté un .jar dans le code de la bibliothèque . la bibliothèque à son tour est utilisé dans l'application principale . les dex était encore dans le fichier de cache, même si j'avais nettoyé mon projet et l'a installé . Pour être sûr de la principale de l'application, vous pouvez vérifier le nombre de la bibliothèque . Le fichier de cache est "Projet -> build -> dex-cache -> cache.xml" . Si vous disposez de plusieurs chefs d'accusation de la bibliothèque, puis u besoin de faire cela dans Android Studio -> File -> invalider le cache /redémarrer
OriginalL'auteur Partha Sarathi Murmu