Sto cercando di compilare un modulo il cui albero delle dipendenze sembraLa risoluzione del conflitto di Gradle non funziona con i progetti Android?
+--- com.squareup.burst:burst-junit4:1.0.2
| +--- com.squareup.burst:burst:1.0.2
| \--- junit:junit:4.11 -> 4.12
| \--- org.hamcrest:hamcrest-core:1.3
+--- 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 -> 1.3
| +--- org.hamcrest:hamcrest-library:1.1
| | \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
| +--- 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 -> 1.3
| +--- com.google.code.findbugs:jsr305:2.0.1
| +--- javax.annotation:javax.annotation-api:1.2
| \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
...
Come potete vedere c'è un conflitto hamcrest-core
versione, ma Gradle sembra riconoscere il conflitto e di applicare il suo predefinito strategia di "ultima versione", che è esattamente quello che voglio.
Tuttavia, quando si cerca di eseguire assembleDebugTest
(manualmente o tramite Android Studio) ottengo
com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/MatcherAssert;
Alcune risposte alle domande simili suggeriscono exclude
ing i vasetti indesiderate, ma ho incontrato un gruppo di simili conflitti e sta diventando un po 'fuori mano.
Perché la strategia di conflitto predefinita di gradle non rimuove automaticamente il jar più vecchio? Il plug-in Android gradle sopprime tale funzionalità?
http://stackoverflow.com/questions/20989317/multiple-dex-files-define-landroid-support-v4-accessibilityservice-accessibility –
ho visto che, e capisco la soluzione rapida. Le mie domande spiegano perché la strategia di risoluzione predefinita di gradle non venga utilizzata per rimuovere automaticamente uno dei barattoli, come mi aspetterei leggendo [questo documento] (http://www.gradle.org/docs/current/dsl/org. gradle.api.artifacts.ResolutionStrategy.html). –
potrebbe provare una build con -verbose ... trovare dove viene convocata configurations.resolutionStrategy {} ... se NON viene invocato, fornire la propria implementazione. –