2015-12-03 3 views
2

Lorsque j'ai intégré BoofCV dans Android Studio, l'erreur suivante est arrivé,BoofCV erreurs de construction gradle dans studio Android

com.android.dex.DexException: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:277) at com.android.dx.command.dexer.Main.main(Main.java:245) at com.android.dx.command.Main.main(Main.java:106) Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/jdk1.8.0_60/bin/java'' finished with non-zero exit value 2

Mon fichier build.gradle est-

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.2" 

defaultConfig { 
    applicationId "com.example.huayu.boofcvandroidstart" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 

    //multiDexEnabled true 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.1.1' 

compile group: 'org.boofcv', name: 'all', version: '0.20' 
} 

Répondre

3

Voici comment j'ai géré le problème. Incluez les pots BoofCV comme vous l'avez fait à l'origine. Ajoutez ensuite ce qui suit à votre application/build.gradle

configurations { 
    all*.exclude group: "xmlpull", module: "xmlpull" 
} 

Cela supprimera la xmlpull incriminée. Vous pouvez également inclure le module android, qui ne fait pas partie de 'tout'.

Voici un exemple sur BoofAndroidDemo

https://github.com/lessthanoptimal/BoofAndroidDemo/blob/master/app/build.gradle

+1

Je voulais juste vous remercier pour cette génial bibliothèque, excellent travail! –

+0

De rien! –

0

Je l'ai utilisé BoofCV dans l'un des mes projets. Vous devez ajouter tous les autres bocaux BoofCV sauf le XmlPullParser car ce pot est en conflit avec le déjà existant XmlPullParser présent sur Android.

J'ajouté BoofCV en téléchargeant tous les pots et seulement y compris ceux qui sont pertinents comme celui-ci:

dependencies { 
      compile files('libs/BoofCV-android-0.19.jar') 
      compile files('libs/BoofCV-calibration-0.19.jar') 
      compile files('libs/BoofCV-feature-0.19.jar') 
      compile files('libs/BoofCV-geo-0.19.jar') 
      compile files('libs/BoofCV-io-0.19.jar') 
      compile files('libs/BoofCV-ip-0.19.jar') 
      compile files('libs/BoofCV-recognition-0.19.jar') 
      compile files('libs/BoofCV-sfm-0.19.jar') 
      compile files('libs/BoofCV-visualize-0.19.jar') 
      compile files('libs/BoofCV-xuggler-0.19.jar') 
      compile files('libs/core-0.26.jar') 
      compile files('libs/ddogleg-0.7.jar') 
      compile files('libs/georegression-0.8.jar') 
      compile files('libs/xpp3_min-1.1.4c.jar') 
      compile files('libs/xstream-1.4.7.jar') 
} 

Bien que ce soit une façon naïve d'ajouter les pots que vous pouvez simplement inclure les pots pertinents dans le dossier des libs et ajoutez cette ligne:

dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
} 
+0

J'ai enlevé xmlpull-1.1.3.1.jar mais l'erreur existe encore. En outre, je ne sais pas pourquoi j'ai besoin d'ajouter les fichiers un par un quand je peux utiliser 'compile fileTree (dir: 'libs', include: ['* .jar'])' –

+0

Oui, vous n'avez pas besoin de ajoutez les fichiers un par un. J'ai posté les inclusions de fichier unique pour vous montrer quels jars j'utilise, et ils compilent sans aucune erreur, donc incluez seulement les jars mentionnés dans le dossier libs et utilisez cette ligne: 'compile fileTree (dir: 'libs', include: [' * .jar ']) ' –