Android tests de construire erreur: Plusieurs dex fichiers de définir Landroid/support/test/BuildConfig

J'essaye d'ajouter l'Espresso 2 de mon projet (qui a aussi beaucoup d'autres dépendances), mais je suis de frapper cette erreur lorsque vous essayez d'exécuter des tests:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/test/BuildConfig;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    ...

Le non-bâti d'essai fonctionne très bien.

N'quelqu'un a des conseils sur la meilleure façon de déboguer ce?

J'ai essayé de courir ./gradlew -q :<my_project>:dependencies, mais je ne peux pas voir les problèmes évidents (mais je ne sais pas beaucoup au sujet de l'interprétation de sa sortie):

<snip>
androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.squareup.spoon:spoon-client:1.1.2
+--- com.google.dexmaker:dexmaker-mockito:1.0
|    +--- com.google.dexmaker:dexmaker:1.0
|    \--- org.mockito:mockito-core:1.9.5
|         +--- org.hamcrest:hamcrest-core:1.1
|         \--- org.objenesis:objenesis:1.0
+--- com.google.dexmaker:dexmaker:1.0
+--- org.mockito:mockito-core:1.9.5 (*)
+--- com.jayway.android.robotium:robotium-solo:5.3.1
+--- com.android.support.test.espresso:espresso-core:2.0
|    +--- com.squareup:javawriter:2.1.1
|    +--- org.hamcrest:hamcrest-integration:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1
|    +--- org.hamcrest:hamcrest-library:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1
|    +--- javax.inject:javax.inject:1
|    +--- com.android.support.test.espresso:espresso-idling-resource:2.0
|    +--- com.android.support.test:testing-support-lib:0.1
|    |    \--- junit:junit-dep:4.10
|    |         \--- org.hamcrest:hamcrest-core:1.1
|    +--- com.google.code.findbugs:jsr305:2.0.1
|    +--- javax.annotation:javax.annotation-api:1.2
|    \--- org.hamcrest:hamcrest-core:1.1
\--- com.android.support.test:runner:0.2
+--- junit:junit-dep:4.10 (*)
+--- com.android.support.test:exposed-instrumentation-api-publish:0.2
\--- com.android.support:support-annotations:22.0.0
<snip>
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:22.1.0
|    \--- com.android.support:support-v4:22.1.0
|         \--- com.android.support:support-annotations:22.1.0
+--- com.android.support:support-v4:22.1.0 (*)
+--- com.afollestad:material-dialogs:0.7.2.4
|    +--- com.android.support:support-v4:22.0.0 -> 22.1.0 (*)
|    +--- com.android.support:appcompat-v7:22.0.0 -> 22.1.0 (*)
|    +--- com.android.support:support-annotations:22.0.0 -> 22.1.0
|    \--- com.android.support:recyclerview-v7:22.0.0
|         +--- com.android.support:support-v4:22.0.0 -> 22.1.0 (*)
|         \--- com.android.support:support-annotations:22.0.0 -> 22.1.0
+--- com.google.android.gms:play-services-base:7.0.0
|    \--- com.android.support:support-v4:22.0.0 -> 22.1.0 (*)
+--- com.google.android.gms:play-services-gcm:7.0.0
|    \--- com.google.android.gms:play-services-base:7.0.0 (*)
+--- de.greenrobot:greendao:1.3.7
+--- de.greenrobot:eventbus:2.2.0
+--- com.squareup.wire:wire-runtime:1.4.0
|    \--- com.squareup.okio:okio:0.6.0 -> 1.0.1
+--- com.squareup.okio:okio:1.0.1
+--- com.squareup.okhttp:okhttp-urlconnection:2.0.0
|    \--- com.squareup.okhttp:okhttp:2.0.0
|         \--- com.squareup.okio:okio:1.0.0 -> 1.0.1
+--- com.squareup.retrofit:retrofit:1.6.0
|    \--- com.google.code.gson:gson:2.2.4
+--- com.squareup.retrofit:converter-wire:1.6.0
|    +--- com.squareup.retrofit:retrofit:1.6.0 (*)
|    \--- com.squareup.wire:wire-runtime:1.2.0 -> 1.4.0 (*)
+--- com.squareup.okhttp:okhttp:2.0.0 (*)
+--- com.squareup.picasso:picasso:2.4.0
+--- com.path:android-priority-jobqueue:1.1.2
|    \--- com.google.android:android:2.2.1
|         +--- commons-logging:commons-logging:1.1.1
|         +--- org.apache.httpcomponents:httpclient:4.0.1
|         |    +--- org.apache.httpcomponents:httpcore:4.0.1
|         |    +--- commons-logging:commons-logging:1.1.1
|         |    \--- commons-codec:commons-codec:1.3
|         +--- org.khronos:opengl-api:gl1.1-android-2.1_r1
|         +--- xerces:xmlParserAPIs:2.6.2
|         +--- xpp3:xpp3:1.1.4c
|         \--- org.json:json:20080701
+--- com.netflix.rxjava:rxjava-android:0.16.1
|    \--- com.netflix.rxjava:rxjava-core:0.16.1
+--- com.nineoldandroids:library:2.4.0
+--- it.sephiroth.android.library.horizontallistview:hlistview:1.2.2
|    \--- com.android.support:support-v4:19.1.+ -> 22.1.0 (*)
+--- com.joooonho:selectableroundedimageview:1.0.1
+--- com.crashlytics.sdk.android:crashlytics:2.0.1
|    +--- com.crashlytics.sdk.android:answers:1.0.1
|    |    \--- io.fabric.sdk.android:fabric:1.0.1
|    +--- io.fabric.sdk.android:fabric:1.0.1
|    \--- com.crashlytics.sdk.android:beta:1.0.1
|         \--- io.fabric.sdk.android:fabric:1.0.1
+--- com.mixpanel.android:mixpanel-android:4.5.3
\--- com.facebook.android:facebook-android-sdk:4.0.0
+--- com.android.support:support-v4:[21,22) -> 22.1.0 (*)
\--- com.parse.bolts:bolts-android:1.1.4
<snip>

J'ai aussi essayé de chercher les sous-dossiers de mon build/intermediates répertoire, mais je ne pouvais pas voir tout de fumer des armes à feu (bien que je ne suis pas sûr que j'étais à la recherche de toutes les dépendance externe Pots dans le droit chemin).

Ici est la section de dépendance de mon build.gradle:

dependencies {
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.android.support:support-v4:22.1.0'
compile 'com.afollestad:material-dialogs:0.7.2.4'
compile 'com.google.android.gms:play-services-base:7.0.0'
compile 'com.google.android.gms:play-services-gcm:7.0.0'
compile 'de.greenrobot:greendao:1.3.7'
compile 'de.greenrobot:eventbus:2.2.0'
compile 'com.squareup.wire:wire-runtime:1.4.0'
compile 'com.squareup.okio:okio:1.0.1'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.retrofit:retrofit:1.6.0'
compile 'com.squareup.retrofit:converter-wire:1.6.0'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'com.squareup.picasso:picasso:2.4.0'
compile 'com.path:android-priority-jobqueue:1.1.2'
compile 'com.netflix.rxjava:rxjava-android:0.16.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
compile 'com.joooonho:selectableroundedimageview:1.0.1'
compile('com.crashlytics.sdk.android:crashlytics:2.0.1@aar') {
transitive = true;
}
compile "com.mixpanel.android:mixpanel-android:4.5.3"
compile "com.facebook.android:facebook-android-sdk:4.0.0"
//For the Rollbar JAR, as it is not available in Maven central
compile fileTree(dir: 'libs', include: '*.jar')
androidTestCompile 'com.squareup.spoon:spoon-client:1.1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.3.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:runner:0.2'
}

Mise à jour: quand je l'ai mise à jour de com.android.tools.build:gradle:1.0.0 à com.android.tools.build:gradle:1.1.1, je reçois cet avertissement:

Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.1.0) and test app (22.0.0) differ.
  • Publier vos build.gradle.
  • Vous souvenez-vous de la dépendance dernière que vous avez ajoutés avant l'erreur? Vous avez donc beaucoup de.
  • Aussi, nous ne savons pas ce qui se est compile fileTree(dir: 'libs', include: '*.jar'), compile project(':CookbriteJava') et compile project(':camera').
  • Je pensais que la sortie de la Gradle dependencies tâche a montré tout ce dont vous auriez besoin? Je vais mettre à jour la question avec mon build.gradle trop.
  • J'ai le plus récemment ajouté les deux dernières dans la liste pour l'Espresso, et pour avoir passé une très similaires erreur que j'ai eu à mettre à jour ma Bibliothèque de prise en charge et de Google Play Services dépendances, et de supprimer AssertJ.
  • gradlew dependencies tâches montre la build.gradle depdencies, il ne sait pas sur les autres projets *.jars.
  • Cette erreur est un message le long des lignes de "pot inclus deux fois dans LICENSE.txt"?
  • Non, il n'est pas - c'est précisément pour se plaindre d'une double BuildConfig classe.
  • Êtes-vous predexing? Pouvez s'il vous plaît poster l'ensemble de votre build.gradle?
  • Je suis predexing - je ne veux pas de poste de l'ensemble de mon build.gradle, mais je vais poster quelques autres mises à jour...
  • Avez-vous des autres informations autres que celles que l'exception? S'il ya quelque chose de pertinent dans le construire de sortie, vous devez l'ajouter. Aussi, ce ne sera pas résolu votre problème, mais c'est toujours une bonne idée, mais vous devriez vous débarrasser de ajoutant explicitement dexmaker et mockito-core, parce qu'ils sont déjà ajoutés transitivement par dexmaker-mockito (vous pouvez le voir dans votre gradlew -q dépendances de sortie). Je ne vois pas de doublons dans votre compiler portée, mais il y a beaucoup de dépendances, donc je ne peux pas dire entièrement.
  • C'est ce que je pensais. Essayez gradlew clean et puis gradlew assembleDebug. Je crois que votre problème est le fait que vous êtes la construction d'un build.config qui est déjà pre-dexed puis ajouter plus à votre dex, plus tard. Cela se produit souvent? Quand est la dernière fois que votre nettoyés?
  • J'ai fait Nettoyer s'appuie pour beaucoup, et un collègue a essayé également de la construction de cette branche de trop (avec la même panne le résultat). Je vais essayer de Daniel suggestion pour l'instant...
  • Je suis en train de vous dire de construire sans predexing.
  • Mon build est déjà très lent, de sorte que la désactivation de predexing n'est pas quelque chose que je veux faire (même si je vais essayer juste pour voir si cela élimine tous les autres problèmes).
  • Je vous remercie. Je veux apprendre de cette erreur bizarre moi-même comme il est difficile de dupliquées sur ma fin.
  • Un peu de chance avec mes suggestions?

InformationsquelleAutor Dan J | 2015-04-24